如何从命令行发送电子邮件?

时间:2020-03-05 18:45:34  来源:igfitidea点击:

我想从命令行快速发送电子邮件。我意识到可能有很多不同的方法可以做到这一点。

我正在寻找一种从linux终端执行此操作的简单方法(可能是bash shell,但应该执行任何操作),以及在Windows上执行此操作的另一种方法。我希望能够直接在命令行上发送电子邮件,或者可以灵活地将消息传递到命令行程序中。我们将如何去做?如果我们有小的脚本,那也很好。

解决方案

回答

$ echo "This is the email body" | mail -s "This is the subject" [email protected]

或者:

$ cat | mail -s "A few lines off the top of my head" [email protected]
This is where my
multiline
message would go
^D

^ D表示按ctrl+d

回答

我们可以使用邮件:

$mail -s <subject> <recipients>

然后,我们键入消息并以只有句点的行结尾。这表明我们已完成并发送消息。

我们还可以通过STDIN通过电子邮件发送电子邮件,该电子邮件将作为电子邮件的文本发送:

$<mail-generating-program> | mail -s <subject> <recipients>

使用此方法的一个小提示,除非计算机已连接到Internet且DNS设置正确,否则我们将无法收到对邮件的回复。对于更强大的命令行程序,我们可以链接到POP或者IMAP电子邮件帐户,签出pine或者mutt。

回答

如果要从Windows命令行执行此操作,则可以在CMD提示符下使用一个名为blat的工具。

从PowerShell中获得更多乐趣。由于PowerShell可以访问.NET Framework,因此可以使用System.Net.Mail中的类发送电子邮件。 PowerShell社区脚本存储库中有一个示例脚本。

回答

在IIRC中,我们还必须配置一个邮件传输代理(MTA)以使用mail或者大多数电子邮件库。 Sendmail是最著名的,但是在配置方面却是真正的猪。 Exim,Qmail和Postfix都是比较流行的流行替代方法。

还有更轻量级的MTA,它们只能发送邮件而不能接收邮件:nullmailer,mstmp,ssmtp等。

Postfix是Ubuntu的默认设置。这篇Wiki文章描述了如何配置它,以确保仅允许从本地地址转发!

回答

如果要调用电子邮件程序,请参阅本文:

如何以跨平台方式打开带有主题和正文的默认邮件程序?

回答

这是一个用于发送电子邮件的脚本的Power Shell示例:

$smtp = new-object Net.Mail.SmtpClient("mail.example.com")

if( $Env:SmtpUseCredentials -eq "true" ) {
    $credentials = new-object Net.NetworkCredential("username","password")
    $smtp.Credentials = $credentials
}
$objMailMessage = New-Object System.Net.Mail.MailMessage
$objMailMessage.From = "[email protected]"
$objMailMessage.To.Add("[email protected]")
$objMailMessage.Subject = "eMail subject Notification"
$objMailMessage.Body = "Hello world!"

$smtp.send($objMailMessage)

回答

我们也可以在Windows中使用此sendmail版本。它是非常简单的,类似于UNIX的标准行为。快速地。不需要任何安装,只需在系统上的任何地方调用EXE。

撰写电子邮件:

echo To: [email protected], [email protected] >> the.mail
echo From: [email protected] >> the.mail
echo Subject: This is a SENDMAIL notification >> the.mail
echo Hello World! >> the.mail
echo This is simple enough. >> the.mail
echo .>> the.mail

发送文件:

\usr\lib\sendmail.exe -t < the.mail

type the.mail | C:\Projects\Tools\sendmail.exe -t