使用Windows 2003 R2从命令行发送电子邮件的最简单方法


11

我有一台Windows 2003 R2服务器,我想从命令行发送电子邮件。该服务器未配置SMTP服务。有没有一种可以让我发送电子邮件的衬板?目前,我的特定用例是在触发性能警报时发送一封电子邮件,但通常它会很有用。

我希望有类似的东西

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

更新: 我将更喜欢不涉及安装第三方软件的解决方案。


诸如blat和sendemail之类的实用程序不需要安装。它们都是独立的exe文件。
John Gardeniers'2

我想我必须接受我至少需要将一个exe(blat或powershell)复制到每台计算机。如果真是这样,那么blat易于使用。谢谢。考虑到他们在标准发行版中加入了多少其他较不有用的功能,我仍然不知道为什么MS会忽略此功能。
彼得

Answers:


15

我会尝试blat。您可以编写vbscript,但是没有内置可执行文件来发送邮件


借调 直接从命令行传递参数可能有点挑剔,但是一旦确定了要执行的操作,OP便会执行所需的操作。
克里斯·索普

我已经使用blat多年了,并取得了巨大的成功。但是,如果我使用Powershell编写,我会切换。
uSlackr 2010年

blat是否可以用作Windows上PHP的发送邮件路径?
SaidbakR 2014年

14

您会考虑使用Powershell而不是cmd.exe吗?如果是这样,则内置邮件发送功能:

$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)  

要制作一个衬板,请将以下内容保存到powershell脚本文件(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)

(确保将smtpserver更改为您的真实服务器)

然后您可以使用以下命令调用它:

powershell.exe c:\path\to\sendmail.ps1 "from@example.com" "to@example.com" "title" "body"

1
还必须安装powershell,否则我会比vbscript更喜欢它。
Jim B 2010年

好答案。只是一个小的更改,参数就必须是单引号。
Brain2000

6

过去,我使用bmail取得了巨大的成功。

用法(从网站复制)

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
我不得不承认,我一直希望有一个内置的解决方案,尽管吉姆的答案似乎暗示我有点天真……
彼得



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.