【问题标题】:Sending e-mail from bash script从 bash 脚本发送电子邮件
【发布时间】:2019-03-16 17:40:59
【问题描述】:

我正在使用 Ubuntu 18.04 LTS、GNU Mailutils 3.4 和 MSMTP 1.6.6 从 Bash 脚本(和/或从命令行进行测试)发送包含附件的电子邮件。我在服务器运行 16.04 时使用 BSD-Mailx,但升级到 18.04 导致 Mailx 无法发送附件。

我尝试了多种格式的mail 命令以将文本传递到电子邮件正文,但它们似乎都失败了。一些例子:

echo "This is the body of the e-mail" | mail address@example.com -s "This is the subject" -A /file/path/file.txt

我得到的只是带有空电子邮件的附件。

mail address@example.com -s "This is the subject" -A /file/path/file.txt <<< echo "This is the body of the e-mail"

同样,清空带有附件的电子邮件。

我也试过用命令末尾的电子邮件地址,它仍然只是给出一个带有附件的空电子邮件。

我已经尝试了上面的其他几种迭代,例如单个&lt;重定向,|命令末尾的文本,当然失败了,但只是试图猜测正确的格式。

还有其他人知道这个吗?

【问题讨论】:

  • 如果您在没有重定向的情况下运行mail,您可能会看到它提示您输入Cc:。也许您的消息正文已在该标头中结束。
  • 我查看了标题,没有看到为邮件正文提供的任何文本。如果我的文本被插入到 CC: 行中,我会认为我会收到“无法送达”的回复,因为该文本不是有效的电子邮件地址。
  • 可能是 stackoverflow.com/q/17359/7552 的副本——完全公开,我有一个我引以为豪的答案。

标签: bash ubuntu smtp msmtp


【解决方案1】:

使用 mailutils

我认为问题是如果你指定-A,stdin 会被忽略:https://savannah.gnu.org/bugs/?54992

您可以将正文作为附加附件:

echo "This is the body of the e-mail" |\
mail address@example.com \
    -s "This is the subject" \
    --skip-empty-attachments \
    --content-type text/plain -A - \
    -A /file/path/file.txt

使用 mutt

虽然我不认为 mutt 真的是为编写脚本而设计的,但它看起来应该可以工作:

echo "this is the body" |\
mutt \
  -s "this is the subject" \
  -a /file/path/file.txt -- \
  address@example.com

【讨论】:

  • 是的,你是对的;我不认为没有附件进行测试。另外,将电子邮件文本作为附件发送是可行的……但不是很有用。我很奇怪这在 BSD-Mailx 之前工作过,但显然该应用程序的“升级”将 -a/-A 函数从附加文件更改为添加标题(?)。我希望切换到 Mailutils 能满足我的需要,但显然不是。我也试过 Mutt,但并不像我希望的那么简单。
  • 如果你有一个多部分的mime消息,我相信每个正文部分都是一个附件。我已经更新了答案,以避免添加空的第一个附件。
  • mime-construct 似乎存在于端口中
【解决方案2】:

感谢@jhnc 我将我指向https://savannah.gnu.org/bugs/?54992。我在那里发布了我的问题,并收到回复说这是一个错误,根据此讨论 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=918806#22,现已在 Mailutils 3.5-3 中修复。

与此同时,通过添加--mime 属性有一种解决方法,如下所示:

echo "body text" | /usr/bin/mail --mime -s "some subject" -A "somefile.csv" my@email.com

显然,我需要在我的“Google foo”和 Stackoverflow 参与方面做一些工作。我希望这是回答我最初问题的“正确”方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-16
    • 2011-04-28
    • 2014-08-04
    • 1970-01-01
    • 1970-01-01
    • 2012-08-25
    • 1970-01-01
    • 2020-11-03
    相关资源
    最近更新 更多