如何使用cron执行mutt发送邮件?
Posted
技术标签:
【中文标题】如何使用cron执行mutt发送邮件?【英文标题】:How to use cron to execute mutt to send email? 【发布时间】:2014-08-14 22:55:32 【问题描述】:我想使用 cron 来执行一个 mutt 脚本来定期发送电子邮件。我已经安装了 mutt 并通过执行 mutt 脚本成功发送了电子邮件,例如:
#!/bin/bash
mutt -s "Test from mutt" user@yahoo.com < /tmp/message.txt -a /tmp/file.jpg
然后我尝试在 cron 中执行此脚本,但 cron 没有按我的预期发送电子邮件。我确定我的 cron 工作正常,因为我使用 cron 执行另一个电子邮件工具:
#!/bin/bash
mail -s "Hello" "user@gmail.com"
这次 cron 完成了工作并在预期的时间发送了电子邮件。所以我认为使用 cron 执行 mutt 命令时可能存在一些问题。谁能帮我? 我的 cron 脚本如下:
15 * * * * bash /Users/DengWenzhe/Study/SportsMedia101/sendEmail.sh
编辑: 我想使用 mutt 的原因是我想发送带有附件的电子邮件,而“邮件”版本不能。如果有人知道可以与 cron 很好地配合使用的命令电子邮件工具,那也会很有帮助。
【问题讨论】:
也许你在 .bashrc 中设置了一些特定于 mutt 的环境变量,但在 cron 执行期间没有加载? @flob 我也有同样的想法,但我该怎么做才能解决它? 在你的命令前加上缺少的变量EMAIL=me@domain.com /command.sh
或者在你的shell脚本中设置它们。
【参考方案1】:
我有同样的问题,在我的情况下,我忘记添加 . /home/user/.profile
以使 cron 能够执行 mutt。我希望这会有所帮助...
【讨论】:
【参考方案2】:我遇到了同样的问题,注意到电子邮件会显示在已发送消息的邮箱中,但它们没有到达收件人。
正如 flob 提到的,我缺少 MAIL
环境变量;最后,完成这项工作的 crontab 行是
# Use a login shell, this provides Mutt with the environment variables it needs
* * * * * bash -l -c 'echo "Body" | mutt -s "Subject" recipient@example.com'
有关提供环境变量的不同方式,请参阅this answer。
【讨论】:
【参考方案3】:可能你只是混淆了你的论点?
mutt -s "Test from mutt" -a /tmp/file.jpg -- user@yahoo.com < /tmp/message.txt
如果这不起作用,请检查您的环境变量。在 cron 执行期间您没有获得登录 shell,因此您可能缺少 EMAIL、MAIL、MAILDIR、REPLYTO 或您的 mutt 配置所依赖的一些环境变量。
【讨论】:
您可能需要将--
放在最后一个文件附件之后和“收件人”地址之前。否则user@yahoo.com
将被视为文件附件。此评论针对 mutt 版本 1.5.23.1。
谢谢,我修好了:-)以上是关于如何使用cron执行mutt发送邮件?的主要内容,如果未能解决你的问题,请参考以下文章
linux中使用mutt发送邮件(linux系统下最简单的邮件发送)