无法使用bash脚本发送电子邮件

时间:2014-06-14 02:01:07

标签: bash

终端不会弹出任何错误消息,但我从未收到过该电子邮件。  这是我的代码:

mail -s "hello" "example@example.com" <<EOF
hello
world
EOF

1 个答案:

答案 0 :(得分:1)

对我来说很好:

pax> mail -s "hello" "pax" <<EOF
hi there
EOF

pax> mailx
Mail version 8.1.2 01/15/2001.  Type ? for help.
"/var/mail/pax": 1 message 1 new
>N  1 pax@paxbox.com  Sat Jun 14 10:25   16/629   hello
& _

您应首先尝试使用本地地址(正如我所知)查看是否正在创建邮件。

除此之外,您应该意识到mail只是将邮件消息添加到邮件系统中。如果你想知道之后会发生什么,你需要查看你在系统上设置的任何MTA(邮件传输代理)。

如果MTA本身失败,你几乎肯定会收到一封邮件回到发送帐户,说明如此(你可以使用上面的mailx来发现这一点)。

由于您尚未指定系统,我将根据Debian提供以下建议,因为这是我习惯的。

在我的Debian框中,exim是MTA,但默认情况下,它不支持发送到远程域。您可以通过运行:

来修改它
sudo dpkg-reconfigure exim4-config

但是你需要小心不要转发电子邮件,以免你在不知不觉中成为垃圾邮件机器人。可以找到更多详细信息here

您可能会发现,如果您希望他们去外面的世界,最好通过SMTP将它们发送到您的ISP而不是尝试在本地机上配置邮件来执行此操作。

但是,如果您想转到mail路线,只需按上述方式运行dpkg-reconfigure,选择“互联网站点;使用SMTP直接发送和接收邮件”作为第一个问题的答案,然后接受所有其他问题的默认值(检查以确保您只接受来自您的本地地址127.0.0.1::1的邮件)。

然后等待exim重新启动并尝试再次发送邮件。

请注意,exim通常会按计划启动队列运行程序(实际发送电子邮件的进程)(对我来说是30分钟),因此邮件可能需要一段时间才能完成。

您可以检查/var/log/exim4中的文件,看看发生了什么(例如,在我的情况下,我的ISP拒绝了该尝试,因为它对pax@paxbox.com一无所知,但您可以找到一个开放的在某个地方进行SMTP中继或将您的发送详细信息欺骗到您的ISP允许的内容。