11

I have a Windows 2003 R2 server and I want to send an email from the command line. This server does not have the SMTP service configured. Is there a one liner that will let me send an email? My specific use case at the moment is to send an email when a performance alert is triggered, but it would be useful in general.

I'm hoping for something like

foomail -t peter@example.org -f blah@example.org -m "Alert!  the sky is falling"

Update: I would much prefer a solution that does not involve installing 3rd party software.

2
  • Utilities like blat and sendemail don't require installation. They're both freestanding exe files. Feb 5, 2010 at 22:26
  • I guess I have to accept that I need to at the very least copy an exe (either blat or powershell) to each machine. If that's the case, then blat is very easy to use. Thanks. I still wonder why MS left this feature out, considering how many other less useful ones they put in to the standard distro.
    – Peter
    Feb 8, 2010 at 17:55

6 Answers 6

15

I'd try blat. You could write a vbscript but there is no built in executable to send mail

3
  • seconding blat. It can be a bit picky about passing parameters directly from the command line, but once you nail it, does exactly what the OP needs. Feb 5, 2010 at 23:51
  • I've been using blat for years with great success. However, If I was writing in powershell, I'd switch.
    – uSlackr
    Feb 8, 2010 at 19:29
  • Does blat able to work as send mail path for PHP on Windows?
    – SaidbakR
    Aug 14, 2014 at 22:02
14

Would you consider powershell rather than cmd.exe? If so, sending mail is built in:

$SmtpClient = New-Object System.Net.Mail.SmtpClient
$SmtpServer = "your.mail.host.com"
$SmtpClient.host = $SmtpServer 

$From = "Me <User@example.com>"
$To = User2@example.com
$Title = "Subject"
$Body = "Body Text" 
$SmtpClient.Send($From,$To,$Title,$Body)  

To make a one liner, save the following to a powershell script file (sendmail.ps1):

   param(  
        [string] $From = "from@example.com",
        [string] $To = "to@example.com",
        [string] $Title = "title",
        [string] $Body = "body"
    )
    $SmtpClient = New-Object System.Net.Mail.SmtpClient
    $SmtpServer = "your.mail.host.com"
    $SmtpClient.host = $SmtpServer 
    $SmtpClient.Send($From,$To,$Title,$Body)

(make sure to change the smtpserver to be your real one)

Then you can call it using:

powershell.exe c:\path\to\sendmail.ps1 "from@example.com" "to@example.com" "title" "body"
2
  • 1
    powershell would also have to be installed, otherwise I would have prefered it over vbscript.
    – Jim B
    Feb 5, 2010 at 23:48
  • Nice answer. Just one minor change, the arguments need to be single quotes.
    – Brain2000
    Jan 21, 2015 at 23:45
6

I've used bmail with great success in the past.

Usage (copied from website)

C:\>bmail /?

    Command Line SMTP Emailer V1.07
    Copyright(C) 2002-2004 Craig.Peacock@beyondlogic.org
    Usage: bmail [options]
            -s    SMTP Server Name
            -p    SMTP Port Number (optional, defaults to 25)
            -t    To: Address
            -f    From: Address
            -b    Text Body of Message (optional)
            -h    Generate Headers
            -a    Subject (optional)
            -m    Filename (optional) Use file as Body of Message
                -c    Prefix above file with CR/LF to separate body from header
                -d    Debug (Show all mail server communications)
1
  • 1
    I have to admit, I was hoping for a built in solution, though Jim's answer seems to imply that was a bit naive of me...
    – Peter
    Feb 5, 2010 at 18:49
2

Try free Mail Alert Simple Mailer: https://sourceforge.net/projects/mail-alert/

It supports SSL/TLS mail servers like gmail and its' easy to configure.

1
0

One more command-line mailer program:

It supports SSL too.

0
sendEmail -f %from_addr% -t %to_addr% -u "Subject Line" -m "Message" -s %smtp_server%

The simplest Win utility I found and used in production environment. Standalone executable, without installation or mandated configuration. Supports both non-TLS and TLS. And has a debugger, which is sometimes helpful.

Executable can found here:

http://caspian.dotconf.net/menu/Software/SendEmail/#download

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.