通过bash脚本发送邮件

时间:2014-11-24 18:41:37

标签: bash email

嘿,我只是想知道我何时尝试创建一个可以发送邮件的bash脚本。首先,我使用命令行测试邮件,但是当我运行命令时没有任何反应。我想这个命令试图发送它,但它永远不会通过它只是挂起,我必须发送杀信。

这些是我试过的命令:

mail -s "Subject" email@.com
mailx -s "Subject" email@.com

2 个答案:

答案 0 :(得分:1)

首先,您需要在邮件中发送消息。我们也可以尝试详细模式:

$ mailx -v -s "Test Message" foo@bar.com <<EOM
> This is my message I want to send.
> I can keep typing it and the last line ends with just "EOM"like this:
> EOM
Mail Delivery Status Report will be mailed to <foo>.
$

<<EOM被称为Here Document。它告诉您的计算机期望输入指向STDIN(键盘)的命令,并且输入将以<<字符后面的字符串结尾(此处为EOM)。

您将收到通过电子邮件发送给您的邮件报告。您可以使用mailx来阅读它,或使用elmpine这些花哨的新电子邮件程序之一,或者只是通过mailx从命令行读取您的邮件:< / p>

$ mailx
Mail version 8.1 6/6/93.  Type ? for help.
"/var/mail/foo": 1 message 1 new
>N  1 MAILER-DAEMON@davebo  Mon Nov 24 14:04  67/2465  "Mail Delivery Status Report"
? s
No file specified: using MBOX.
"/home/users/foo/mbox" [New file]
? q
$

现在,您的mbox目录中应该有一个名为$HOME的文件。看看这个文件,看看它的内容。我明白了:

$ vi $HOME/mbox

Enclosed is the mail delivery report that you requested.

                   The mail system

<foo@bar.com>: delivery via
    mail.foo.com[XX.XX.XX.XX]:25: host
    mail.foo.com[XX.XX.XX.XX] refused to talk to me: 554
     -Please submit an unblock request 
    <http://x.co/rblbounce>

看起来我被封锁了。

答案 1 :(得分:0)

使用您使用的语法,邮件肯定会等待您在标准输入上键入消息,如评论中所建议的那样。你可以:

- 在命令后自己输入一条消息,以C-d终止

- 使用这样的语法将字符串写入正文:

mail -s "Subject" foo@bar.com <<< "Hello"

- 不同的语法

echo "Hello" | mail -s "Subject" foo@bar.com

特别是如果您要在脚本中发送邮件,您可能需要考虑最后两种方法中的任何一种。