📌  相关文章
📜  如何在 unix 中发送带有正文和附件的电子邮件 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:08:49.631000             🧑  作者: Mango

如何在 Unix 中发送带有正文和附件的电子邮件 - Shell-Bash

当需要通过 shell 编程在 Unix 上发送电子邮件时,有时会遇到需要添加附件和正文的情况。本文将介绍如何通过 shell 脚本发送带有附件和正文的电子邮件。

需要使用的命令

在这个例子中,我们需要使用以下命令:

  • mail:发送电子邮件的命令
  • mutt:带有附件的电子邮件的命令
  • uuencode:将二进制文件编码为 ASCII 文本格式以便进行电子邮件传输
发送带有正文和附件的电子邮件

以下是要发送电子邮件的 shell 脚本,脚本同时带有一个附件和正文。

#!/bin/bash

to="recipient@example.com"
subject="Testing Email with an attachment"
body="Hello,\n\nI'm sending this email with an attachment.\n\nThanks,\nYour Name"

attachment="/path/to/attachment.txt"

echo -e "$body" | mutt -s "$subject" -a "$attachment" -- "$to"
解释

我们使用 bash 脚本的变量来存储目标收件人、主题、正文和附件的位置。然后,我们使用 echo 命令将正文写入标准输出,并通过管道将其传递给 mutt 命令。然后我们使用 -s 选项指定邮件的主题,-a 选项指定要附加的文件。最后,我们指定收件人电子邮件地址和 mutt 命令即可发送电子邮件。

添加多个附件

如果要添加多个附件到电子邮件中,则像这样使用添加多个 -a 选项:

#!/bin/bash

to="recipient@example.com"
subject="Testing Email with Multiple Attachments"
body="Hello,\n\nI'm sending this email with multiple attachments.\n\nThanks,\nYour Name"

attachment1="/path/to/attachment1.txt"
attachment2="/path/to/attachment2.txt"
attachment3="/path/to/attachment3.txt"

{ echo -e "$body"; uuencode "$attachment1" $(basename "$attachment1"); uuencode "$attachment2" $(basename "$attachment2"); uuencode "$attachment3" $(basename "$attachment3"); } | mail -s "$subject" "$to"

我们使用 uuencode 命令将二进制文件编码为 ASCII,并使用 basename 命令获取附件的文件名。最后,我们将所有内容发送到 mail 命令并添加一个主题和收件人电子邮件地址。

结论

在 Unix 系统上,我们可以使用 mail 命令和 mutt 命令将带有附件和正文的电子邮件通过 shell 脚本发送。我们也可以使用 uuencode 命令将二进制文件编码为 ASCII 格式,以便在电子邮件中进行传输。