如何从DOS批处理命令发送电子邮件?

时间:2010-07-20 12:59:40

标签: windows command-line batch-file cmd

我在DOS中有一个批处理文件可以进行一些检查,我需要在完成后发送一封电子邮件。我在interwebz上找到了一些解决方案,但大多数都是第三方,或者只是在Outlook中打开一条新消息。我需要命令才能完整地发送电子邮件,而无需任何人为干预。

如果重要的话,我们在这里使用MS Exchange。

谢谢!

5 个答案:

答案 0 :(得分:3)

假设:

  1. 您的Exchange服务器通过端口25上的SMTP接受电子邮件。
  2. 您希望发送一个简单的纯文字电子邮件,但不附带附件。
  3. 可以从批处理文件中驱动telnet(或类似的telnet客户端)。
  4. 您可以通过Telnet发送简单的电子邮件。此链接显示了如何执行此操作的示例:http://www.yuki-onna.co.uk/email/smtp.html

    如果假设2或3错误,您可以编写命令行SMTP客户端,以便以多种语言轻松发送简单电子邮件,然后从批处理文件中调用它。

答案 1 :(得分:3)

尝试

http://sourceforge.net/projects/blat/

它是来自SourceForge的开源邮件程序,有很多选项。

答案 2 :(得分:1)

尝试http://caspian.dotconf.net/menu/Software/SendEmail/

这是第三方实用程序,但您可以轻松地从批处理文件中调用它。我做。我有同样的需求:在批处理文件的末尾发送电子邮件,没有人为干预。

答案 3 :(得分:0)

如果您的主机操作系统具有PowerShell,则只需执行以下操作,就可以从incurring script-execution privilege blocking到CMD.EXE作为单行代码(有效地)完成此操作:

powershell -command $S=New-Object Net.Mail.SmtpClient('your.smtp.server',port);$S.Send('addr-from','addr-to','subject','body')

用;连接行;并作为一个PS命令执行就可以避免检查/设置脚本的执行。当然,在CMD.EXE中,单个命令字符串的长度有一个limitation,因此,这种精确的技术对接收者的数量,主题和正文的大小等设置了一些限制。我敢肯定,这是其他地方所涵盖的。

自然,我的用法更加强大,被封装在.BAT中,将其转换成具有参数检查,错误处理,日志记录等功能的实用程序(对于锁定的Windows主机上的低摩擦脚本而言是完美的) 。发疯。

如果您的SMTP服务器需要身份验证,则可以根据需要添加additional necessary configuration of the SmtpClient,这当然会进一步限制长度。

编辑:将其插入$S.Send之前以添加身份验证:

$S.EnableSsl=$true;$S.Credentials=New-Object System.Net.NetworkCredential('usr', 'pass');

答案 4 :(得分:0)

eng_articles = Newspapers.objects.values_list('eng_article', flat=True) 
esp_article =  Newspapers.objects.values_list('esp_article', flat=True)

这对我有用

但是我必须发送一封带有多个收件人附件的电子邮件