如何使用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发送邮件?的主要内容,如果未能解决你的问题,请参考以下文章

centos 使用mutt发送邮件带附件

Linux使用Mutt发送邮件/附件

linux中使用mutt发送邮件(linux系统下最简单的邮件发送)

使用mutt+msmtp在Linux命令行界面下发邮件(续)

linux下mutt邮件发送系统安装操作记录

Zabbix利用msmtp+mutt发送邮件报警