我可以用
echo "My Mail content" | exim [email protected]
发送电子邮件,但邮件中不包含主题
我如何发送电子邮件主题,”从“ 和 ”回复“来自 exim 命令行的标题?
答案1
Exim 期望收到完整的 RFC 5322 / 2822 / 822 电子邮件消息作为输入。因此,您需要以以下形式提供标题...标头。
$(echo“收件人:foo@bar”; echo“回复:[电子邮件保护]“ echo "主题:你好!"; 回声“”; echo "我的邮件内容") | sendmail foo@bar
$发送邮件 foo@bar <<'EOF' 来自:“The Great Quux”<baz@quux> 收件人:“Fred Foobar”<foo@bar> 回复:dev@null 主题:你好! 内容类型:text/plain;字符集=utf-8 我的邮件内容 末梢血
(不确定是否需要引用 From/To 中的名称。RFC 5322 似乎说应该这样做)
答案2
exim -i -t <<< 'From: My Self <[email protected]>
To: Recip One <[email protected]>, Recip Two <[email protected]>
Subject: Test message
content line 1
content line 2'
这适用于任何兼容 sendmail 的 MTA,而不仅仅是 exim。如果您有 sendmail,您可以运行相同的命令,但以“sendmail -i -t...”开头。
当然,您也可以从文本文件加载输入。
exim -i -t < file/path.txt
角括号前的电子邮件地址标签部分不需要加引号。
-i 开关可防止以点结尾的行。如果您只运行“exim -t”并以交互方式粘贴或输入内容,则跳过 -i 开关,您可以以仅包含点的行和一个空白行结束(不知道为什么需要额外的空白行 - 以前不需要)。
-t 根据您提供的内容而不是通过命令行参数指定来获取收件人。电子邮件代理希望设置收件人:字段并遵守标签,因此您通常应该发送它。如果您确实发送了收件人:,请使用 -t 开关,因为在这种情况下,在命令行上指定收件人将是多余的,并且可能成为冲突的根源。
另一种策略是使用 s-nail 的 mailx 程序。安装 s-nail 后,只需将“set mta=/usr/bin/exim”(或 /usr/sbin/exim 或它所在的任何位置)添加到 /etc/mail.rc 或您个人的 ~/.mailrc,然后像这样使用 mailx:
mailx -s 'subject line' 'Recip One <[email protected]>' 'Recip Two <[email protected]>' <<< 'content line 1
content line 2'
或者
mailx -s 'subject line' 'Recip One <[email protected]>' 'Recip Two <[email protected]>' < file/path.txt
Mailx 有一个不错的 -a 开关,可用于添加文件附件。如果您运行的是旧版 s-nail,则没有“mta”设置,您需要将 /usr/sbin/sendmail 或 /usr/bin/sendmail(或类似文件)替换为指向 exim 二进制文件的符号链接。