【问题标题】:How to use cron to execute mutt to send email?如何使用cron执行mutt发送邮件?
【发布时间】: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脚本中设置它们。

标签: email cron mutt


【解决方案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。
      • 谢谢,我修好了:-)
      猜你喜欢
      • 2014-03-27
      • 1970-01-01
      • 2013-11-03
      • 1970-01-01
      • 1970-01-01
      • 2019-01-21
      • 1970-01-01
      • 1970-01-01
      • 2012-11-17
      相关资源
      最近更新 更多