使用命令行和 sendmail 发送带有多个附件的电子邮件
Posted
技术标签:
【中文标题】使用命令行和 sendmail 发送带有多个附件的电子邮件【英文标题】:Send e-mail with multiple attachments using command line and sendmail 【发布时间】:2014-02-09 10:56:35 【问题描述】:是否可以使用uuencode
和sendmail
发送多个附件?
在脚本中,我有一个变量,其中包含需要附加到单个电子邮件的文件,例如:
$attachments=attachment_1.pdf attachment_2.pdf attachment_3.pdf attachment_4.pdf
还有一个$template
变量,例如:
$template="Subject: This is the subject
From: no-reply@domain.com
To: %s
Content-Type: text/plain
This is the body.
"
我想出了:
printf "$template" "$recipient" |
sendmail -oi -t
我必须在其中的某个地方附加 $attachments
变量中的所有内容?
【问题讨论】:
mailx 是一个选项吗?如果是这样,您可以简单地使用-a
开关发送多封电子邮件。你有使用 vanilla sendmail 吗?
查看***.com/questions/19940292/…上的答案,它将让您了解如何通过uuencode解析包含附件的变量。
【参考方案1】:
uuencode
附件并通过sendmail
发送
发送 MIME 附件更好。uuencode
在脚本中实现起来更简单但电子邮件某些客户端不支持它。
attachments="attachment_1.pdf attachment_2.pdf attachment_3.pdf attachment_4.pdf"
recipient='john.doe@example.net'
# () sub sub-shell should generate email headers and body for sendmail to send
(
# generate email headers and begin of the body asspecified by HERE document
cat - <<END
Subject: This is the subject
From: no-reply@domain.com
To: $recipient
Content-Type: text/plain
This is the body.
END
# generate/append uuencoded attachments
for attachment in $attachments ; do
uuencode $attachment $attachment
done
) | /usr/sbin/sendmail -i -- $recipient
【讨论】:
为我工作,但它正在发送一些无名文件作为附件。如何避免这种情况?【参考方案2】:不管怎样,mailx
也很有效。
mailx -s "Subject" -a attachment1 -a attachement2 -a attachment3 email.address@domain.com < /dev/null
【讨论】:
以上是关于使用命令行和 sendmail 发送带有多个附件的电子邮件的主要内容,如果未能解决你的问题,请参考以下文章