【问题标题】:Cant send email with bash script无法使用 bash 脚本发送电子邮件
【发布时间】:2014-08-04 15:23:09
【问题描述】:

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

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

【问题讨论】:

  • mailq 说什么?
  • 尝试发送到您自己在本地系统上的帐户(只有您的用户名,没有@host)。那应该行得通。您的代码看起来正确;我怀疑外发邮件设置不正确。尝试运行mail 来检查“外发邮件失败”消息。
  • mailq 是查看邮件队列的命令。你真的应该说你使用的是什么操作系统。
  • 我尝试将其发送到我自己在本地系统上的帐户,它可以工作,但我无法将其发送到电子邮件帐户
  • 这样的命令很好。您是从一台具有动态 IP 地址的机器上运行该脚本,还是从一台反向 DNS 查找与其邮件名不匹配的机器上运行该脚本?

标签: bash


【解决方案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,选择“Internet 站点;邮件是使用 SMTP 直接发送和接收”作为第一个问题的答案,然后接受默认值所有其他问题(检查以确保您只接受来自本地地址 127.0.0.1::1 的邮件)。

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

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-16
  • 1970-01-01
  • 2011-09-16
  • 2016-05-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多