我想要从命令行快速发送电子邮件。我知道可能有很多不同的方法。
我正在寻找一种简单的方法,在Linux终端(可能是bash shell,但任何一种都可以)上实现这一点,并在Windows上实现另一种方法。我希望能够直接在命令行上撰写电子邮件,或者具备将消息导入命令行程序的灵活性。 您会如何处理?如果您有小脚本也可以。
我想要从命令行快速发送电子邮件。我知道可能有很多不同的方法。
我正在寻找一种简单的方法,在Linux终端(可能是bash shell,但任何一种都可以)上实现这一点,并在Windows上实现另一种方法。我希望能够直接在命令行上撰写电子邮件,或者具备将消息导入命令行程序的灵活性。 您会如何处理?如果您有小脚本也可以。
$ echo "This is the email body" | mail -s "This is the subject" me@email.com
或者:
$ cat | mail -s "A few lines off the top of my head" me@here.com
This is where my
multiline
message would go
^D
^D - 表示按下ctrl+d
echo To: you@example.com, me@example.com >> the.mail
echo From: them@example.com >> 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
以下是一个PowerShell发送电子邮件的脚本示例:
$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 = "script@mycompany.com"
$objMailMessage.To.Add("you@yourcompany.com")
$objMailMessage.Subject = "eMail subject Notification"
$objMailMessage.Body = "Hello world!"
$smtp.send($objMailMessage)
如果您正在使用Linux服务器,但邮件不可用(这可能是共享服务器的情况),您可以编写一个简单的PHP / Perl / Ruby(取决于可用的内容)脚本来完成相同的操作,例如:
#! /usr/bin/php
<?php
if ($argc < 3) {
echo "Usage: " . basename($argv[0]) . " TO SUBJECT [CC]\n";
exit(1);
}
$message = file_get_contents('php://stdin', 'r');
$headers = $argc >= 4 ? "Cc: $argv[3]\r\n" : null;
$ret = mail($argv[1], $argv[2], $message, $headers);
exit($ret ? 0 : 1);
然后按照以下方式调用:
mail me@example.com test < message