使用命令行和 sendmail 发送带有多个附件的电子邮件

Posted

技术标签:

【中文标题】使用命令行和 sendmail 发送带有多个附件的电子邮件【英文标题】:Send e-mail with multiple attachments using command line and sendmail 【发布时间】:2014-02-09 10:56:35 【问题描述】:

是否可以使用uuencodesendmail 发送多个附件?

在脚本中,我有一个变量,其中包含需要附加到单个电子邮件的文件,例如:

$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 发送带有多个附件的电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

将 sendmail 用于 HTML 正文和二进制附件

如何使用 bash 命令“sendmail”发送 html 电子邮件?

使用sendmail发送邮件

sendmail 如何发送附件

c#发送邮件,可发送多个附件

ubuntu下的sendmail 8.14.4如何更改附件大小限制