Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

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.

share|improve this question
    
Utilities like blat and sendemail don't require installation. They're both freestanding exe files. –  John Gardeniers Feb 5 '10 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 '10 at 17:55

3 Answers 3

up vote 11 down vote accepted

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

share|improve this answer
    
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. –  Chris Thorpe Feb 5 '10 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 '10 at 19:29

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"
share|improve this answer
    
Not quite a one-liner :) –  John Gardeniers Feb 5 '10 at 22:26
    
Sorry, will edit it to fit that description. –  MattB Feb 5 '10 at 22:43
1  
powershell would also have to be installed, otherwise I would have prefered it over vbscript. –  Jim B Feb 5 '10 at 23:48

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)
share|improve this answer
    
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 '10 at 18:49

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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