7 Send Email Command Lines & How to Use: Step-by-Step
Not only is email very useful for communication between friends and families and sending messages with attachments such as reports, photos, documents, presentations, video clips and music files, it’s also useful for notification purposes. For example, a website monitoring service such as Pingdom has alerts where you’ll be notified through different methods such as email, SMS, twitter or in-app when your server is down. Third party backup software also normally has at least an email notification feature where you can set it up to automatically email you when the backup process has completed or failed.
If you are writing a batch file and want to send an automated email when the batch has completed running or if you’re faced with a third party software that does not even support email notification, then the simple solution is to use a command line email sending tool for Windows. Here we have 7 ways to look at.
An example command line for sending an email using Gmail is given for every utility mentioned below. You’ll need to change the following information in the command line option:- [email protected] = Replace it with your full Gmail address
- [email protected] = Replace it with the email address that will receive the message
- YourGmailPassword = Replace it with your Gmail password
- subject = The subject of the email. Make sure it is enclosed with double quotes if there are spaces. For example, “This is a long subject“
- body = The message of the email. Should also enclose with double quotes if there are spaces
1. SwithMail
Out of all the command line email sending tools, we’d consider SwithMail as one of the best in its class, if not the best. Instead of the need to write really long command line options to silently send an email where you might make mistakes and need a few tries to get it right, configuring SwithMail is quite foolproof thanks to the easy to use settings configuration GUI. You even test the email settings to make sure that it is able to successfully send an email.
Other than the standard options such as attachments, CC, BCC that you’d normally find when sending an email, SwithMail supports returning error codes, global variables and wildcard attachments which is very useful to automatically send log files with dated filenames. Below is a working example of SwithMail command line options to send an email using Gmail account.
SwithMail.exe /s /from [email protected] /pass YourGmailPassword /server smtp.gmail.com /p 587 /SSL /to [email protected] /sub subject /b message
2. CMail
If you need to use a command line email sending tool that supports proxy, CMail would be your choice as it’s the only one that can support socks and HTTPS based proxy. Other interesting features that can be found in CMail are sending the whole directory content based on wildcard attachment and delivery status notification.
The full working command line to send an email using Gmail is as follows:
CMail.exe -secureport -host:[email protected]:[email protected]:465 -from:[email protected] -to:[email protected] -subject:subject -body:message
3. SendSMTP
Running SendSMTP will bring up an interactive graphical user interface to send emails but at the same time it also supports command line instructions to silently send email with just one line of commands. Although an advanced user would have no problems with the command line arguments, a GUI will greatly help a basic computer user in creating a working config file.
Some notable features found in SendSMTP are the ability to save the password as encrypted using 128-bit Rijndael (AES) rather than saving the password as clear text, enable log file to save the activity of the SendSMTP program, and can return codes to report if the send email is successful (0), failed (1), or cannot find settings (2). The full command line for SendSMTP to send email using Gmail is as follow.
SendSMTP.exe /nos /host smtp.gmail.com /port 587 /auth 2 /userid [email protected] /pass YourGmailPassword /from [email protected] /to [email protected] /subject subject /body message
However, if you’ve saved the settings as default from the GUI which will create a SendSMTP.ini file at the same location as the program, a much shorter command line can be used to send an email.
SendSMTP /s SendSMTP.ini
Do note that there are 2 versions available on the download page. You will need the newer version with the bigger file size to support sending email using Gmail because the old version does not support SASL authentication.
4. mailsend
Comparing with the utilities mentioned above, mailsend is a simpler command line tool to send email using SMTP. It doesn’t have fancy features such as loading config from an external file, password encryption, GUI, error codes and etc. However, an interesting feature found in mailsend that is not available on other command line email sending tool is the ability to show SMTP server information by using the -info option.
mailsend is available for both Windows and Linux operating system. Below is the example command line for mailsend to send an email using Gmail.
mailsend1.17b15.exe -t [email protected] -f [email protected] -ssl -port 465 -auth -smtp smtp.gmail.com -sub subject -M message -user [email protected] -pass YourGmailPassword
5. Send-It-Quiet
Send-It-Quiet is the smallest command line SMTP mailer utility that weighs only 14KB in size and this is made possible with .NET Framework. This would also mean that you need to have .NET Framework 3.5 installed to run Send-It-Quiet. Send-It-Quiet only comes with very basic parameters that are enough to send an email. Possibly the only extra features found in Send-It-Quiet are the return value of ERRORLEVEL and also the flexibility of manually adding the parameters to registry.
The command line to send an email using Send-It-Quite with a Gmail account is:
senditquiet.exe -s smtp.gmail.com -port 587 -u [email protected] -protocol ssl -p YourGmailPassword -f [email protected] -t [email protected] -subject subject -body message
6. SendEmail
SendEmail is written in Perl but there is no need to install Perl in Windows for this command line mailer utility to work. SendEmail was last updated in 2009, but the last version has TLS support which means it can send email using Gmail SMTP. In terms of features, it is quite similar to Send-It-Quiet which only supports the standard email sending options such as to, from, subject, body, attachment, etc. SendEmail is available for both Windows and Linux operating systems.
Here is an example of the command line options that can send email using Gmail SMTP.
sendEmail.exe -o tls=yes -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu [email protected] -xp YourGmailPassword -u subject -m message
7. PowerShell
PowerShell is included in Windows operating systems since Windows 7 which means you can actually use a powershell script to send an email through Gmail SMTP without any of the command line tools mentioned above.
The sample script that can be downloaded at the link below is a very basic one that is meant to only send an email without attachment support. Simply download the ps1 script, open it with Notepad or Windows PowerShell ISE and change the credentials located at line number 8. The command line to run the powershell script is as follows. Make sure you update the path to the .ps1 file.
Powershell.exe -executionpolicy remotesigned -File C:\Users\Raymond\sendemail.ps1
Download PowerShell Script to SendEmail
The popular Blat is not included in the list because it does not support SSL which means it cannot send email using Gmail SMTP. Bmail (last updated in 2004), cmdsendmail which is a part of CommandLine Tools, and XmlSendmail are also example of command line send mail utility that doesn’t support SSL.
Sendemail still does the job for me. Thank you for your listing.
hello I am using below script in powershell but getting error:
$EmailFrom = “from_email_id”
$EmailTo = “to_email_id”
$Subject = “Subject”
$Body = “Hello User”
$SMTPServer = “smtp.gmail.com”
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential(“emailid”, “password”);
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
error:
Exception calling “Send” with “4” argument(s): “The SMTP server requires a secure connection or the client was not
authenticated. The server response was: 5.7.0 Authentication Required. Learn more at”
At line:1 char:1
+ $SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : SmtpException
This is such a nice find! I tried SwithMail, SendSMTP and Powershell, but loved SwithMail more because it’s fairly up-to-date compared to SendSMTP and it offers password obfuscation . They all worked beautifully with Gmail using an app-specific password. Powershell offers a fantastic native solution if use of third-party tools is not preferable. Thanks for this extremely handy listing. Some free backup programs lock the email alert feature, but allow running of scripts/programs before and/or after backup jobs are executed. These solutions will come in handy for such cases. I’m using this with Internet Download Manager to alert me when downloads in a queue are complete.
A feature I’m looking for is the ability to pipe output from a command into the command line mail sender as it’s body or be able to specify a text file to use as the body. For example, this feature would be useful for running a powershell script and piping it’s output directly into an email. Do any of these utilities have this capability?
Yes. CMail supports both.
I have programmed a small tool that also sends mails via cmd / batch. You can use a gui to create the command. It supports SSL, authentication and sending via the OWA interface of the Exchange Server.
Link: chefsender.com
On a tangent, Davmail is a local proxy that converts an owa (no smtp/imap) email address into a usable connection for those sweet, sweet Thunderbird plugins. Or opera mail m2. Or TheBat. Or HERMES. Or Eudora. Or Em Client.
Hi,
Dipisoft SendMail (freeware) software is another email sending tool for Windows which has a graphical interface but can also be used in command line mode.
It allows you to send attachments, can interface with the ActiveDirectory in order to send emails to groups or distribution lists.
Finally, it offers the flexibility to declare several SMTP configurations (via the graphical interface) which can then be used by command line mode and GUI mode.
The tool is natively in French but it is provided with an English translation. If you wish/can, you can contribute to the tool by translating it into other languages.
dipisoft.com/articles.php?lng=fr&pg=65&mnuid=2211&tconfig=0
The article is in French but you can translate it using the translation tool integrated into the site, in one of the blocks in the sidebar.
Regards,
damien.
the download link for sendsmtp does not work. is there another place to get it?
thanks
rich
The link has been updated, thanks for the report.
Which tool can send a signature line with logo
Any client that can send HTML messages with inline attachments.
Does any of above supports html formats?
CMail allows you to specify an HTML document to use as the message body.
Minirelay…
Mini-relay cannot be used to send mail from the command line. It only relays mail from other clients, much of which will end up in spam folders due to the sender not having their domain and server configured as per best practice.
Left off the list: NetMailBot (NetMailBot.com)
Great solution if you need to email automated responses from windows task scheduler where the option to email has been deprecated (i.e. functionality removed by microsoft). I selected SwithMail and it works perfectly with Win Server 2012 R2.
I decided I don’t care if the server backup is sucessful, I only want to know if it has failed so only need one custom task to send me an email when a backup fails.
example arguments…
/s /from adminemailaddress /pass yourpassword /server yoursmtprelayserver /p 25 /to recipientemail /sub “Server Backup Job Has Failed!” /b “Hi, the overnight Server Backup Job has Failed Please investigate and Ressolve as Rquired Server Admin”
Hope this helps.
SMTPS on port 465 has been considered deprecated since STARTTLS was introduced in 1998. CMail and mailsend support both methods, so the examples should be updated to be consistent with the other products.
E.g.
cmail.exe -starttls -host:[email protected]:[email protected]:587 -from:[email protected] -to:[email protected] -subject:subject -body:message
You may also wish to add notes about GMail authentication. Users may need to either enable the Less secure apps setting on your Google account, or configure an App Password if using 2-step verification in order to send mail via the service.
great article. Thanks.
by the way regarding the PowerShell Script to SendEmail any way to send it with an attached file?
Sorry, I got the right concept, but the wrong syntax for the way it’s used in the blog post. Try adding a line like this for the attachment:
$attachment = “c:\attachment.txt”
a very good tool is blat (www.blat.net)
I liked the CMail!!! It accepts attach files using wildcards (*.*, !*,*. etc).
Many thanks!
SmtpMail by SmtpInfo is perfect. smtpinfo.com
If you are logged in a Windows with an Active Directory user you can send authenticated emails without writting your user and password
But fully featured SmtpMail with authentication costs $49 while Mail Alert Simple Mailer (sourceforge.net/projects/mail-alert/) is free and supports safe authentication, BCC, CC, multiple recipients and any SMTP port while free SmtpMail edition don’t.
There is another cool commandline tool for sending emails:
sourceforge.net/projects/mail-alert/
It supports SSL and TLS, so you can configure your gmail address for sending emails.
thank you very much for the information, I created many programs in batch using some consoles, wget to download web pages or file. winrar console for actions on rar or zip files, fastman92imgconsole for working with files (.img). wbox, wfile, winput, wselect, and more did a program called (GTASA auto-installer creator) for the game gta san andreas and (GTASA audio-installer creator) with the help of the program autoplay menu designer did the menu.
and I had given up hope of making a program to send email, so we can send text messages to cell phones via email companies, and now thanks to this information I can continue my project, THANKS
7/26/15: things are a tad more difficult, I think, due to recent Security enhancements. I could not send anything via AT&T (kept getting Error Code 2 — later learned this is probably a password issue-could find out nothing except what the SMTP server URL might be).
I thought I also failed with Google, despite finding a HowTo. I eventually got a test email sent from Google to another account, immediately followed by a Google system-generated email that my account may have been hacked. There is an additional PIN security code that might be needed to remotely use the email account if it thinks it isn’t really me. I cannot find out how to program that because there is no info about it. There is an option to “lower the security settings on your account”. So, the thing that might work for me (I want to send myself an automatic email when a long programming build is finished) is to sign up for yet another Gmail account, lower its security settings, and use that instead of the real Google account. I want to use AutoIT (found a script for that!) to make a pre-written EXE emailer that I can include in a batchfile somewhere in the build.
nice info. thanks Ray
great.. i can use this for my visual basic project. thanks.
nice info raymond. thank you