0

我正在使用 shell 脚本发送电子邮件,我使用的代码如下所示:

declare -a ATTACH
ATTACH="TEST.pdf"
(
echo "To: user1@domain.com";
echo "Cc: user2@domain.com";
echo "Subject: Example Subject";
echo "MIME-Version: 1.0";
echo "Content-Type:multipart/mixed; boundary=\"B835649000072104Jul07\"";

echo "--B835649000072104Jul07";
echo "Content-Type: text/html;charset=\"UTF-8\"";
echo "Content-Transfer-Encoding: 7bit";
echo "Content-Disposition: inline";
echo "<html><head></head><body>Example</body></html>"
echo ""
echo "--B835649000072104Jul07";
echo 'Content-Type: application/pdf; name="'$(basename $ATTACH)'"';
echo "Content-Transfer-Encoding: base64";
echo 'Content-Disposition: attachment; filename="'$(basename $ATTACH)'"';
base64 $(basename $ATTACH)
echo
echo "--B835649000072104Jul07";
) | /usr/sbin/sendmail -t -oi

我的目标是在正文和 pdf 附件中发送 HTML 文本。上面的代码能够使用 Content-type: text.csv 发送有效的 CSV 文件,也可以使用上面的脚本发送 pdf 文件,但该 pdf 文件不可读或损坏。我对这个问题进行了彻底的搜索,但只有我发现了另一种编码 uuencode 编码,但我听说 base64 编码更好更高效。
为了有效且完全有效地发送 pdf 文件,我应该做哪些更改。我会很感激任何答案。

4

1 回答 1

2

好的,我对代码几乎没有做任何改动,当我使用 base64 给出 OpenSSL 命令时它就起作用了。

declare -a ATTACH
ATTACH="TEST.pdf"
(
echo "To: user1@domain.com";
echo "Cc: user2@domain.com";
echo "Subject: Example Subject";
echo "MIME-Version: 1.0";
echo "Content-Type:multipart/mixed; boundary=\"B835649000072104Jul07\"";

echo "--B835649000072104Jul07";
echo "Content-Type: text/html;charset=\"UTF-8\"";
echo "Content-Transfer-Encoding: 7bit";
echo "Content-Disposition: inline";
echo "<html><head></head><body>Example</body></html>"
echo ""
echo "--B835649000072104Jul07";
echo 'Content-Type: application/pdf; name="'$(basename $ATTACH)'"';
echo "Content-Transfer-Encoding: base64";
echo 'Content-Disposition: attachment; filename="'$(basename $ATTACH)'"';
echo
openssl base64 < /home/username/TEST.pdf
) | /usr/sbin/sendmail -t -oi

它现在正在工作:-)

于 2020-08-08T20:41:32.660 回答