![发送邮件附件为空](https://linux22.com/image/71115/%E5%8F%91%E9%80%81%E9%82%AE%E4%BB%B6%E9%99%84%E4%BB%B6%E4%B8%BA%E7%A9%BA.png)
我正在尝试将附件添加到我的 sendmail eml 文件中。当前的eml文件(order.eml)有以下内容
From: Sender <[email protected]>
To: [email protected]
Subject: Report
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="B835649000072104Jul07"
--B835649000072104Jul07
Content-Type: text/plain; charset="US-ASCII"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Body Copy
--B835649000072104Jul07
Content-Type: application/pdf
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="por5151.pdf"
base64 por5151.pdf
--B835649000072104Jul07--
order.eml 和 por5151.pdf 文件都在同一目录中,我尝试使用
# /usr/sbin/sendmail -t < order.eml
当电子邮件到达时,我可以在附件中看到 por5151.pdf,但它是空白的(0 字节)。我不知道为什么会这样,我正在努力解决它
答案1
您需要做的是将文件包含在
Content-Disposition: attachment; filename="por5151.pdf"
生成.eml
文件时,可以使用以下base64
实用程序执行此操作:
base64 por5151.pdf
确保关闭边界 ( --B835649000072104Jul07--
) 插入到其后面。
sendmail
不会解释您交给它的文件,因此不会神奇地插入.pdf
文件的内容。
答案2
我创建了以下脚本来附加 CSV 文件。它错误地截断了 CSV 的列名,并且还通过电子邮件获取了另外一个文件,即“ATT0001.txt”。
(
echo "From:"$1;
echo "To:"$2;
echo "Subject:"$3;
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 "";
echo "$4";
echo "--B835649000072104Jul07";
echo "Content-Type: text/csv";
echo "Content-Transfer-Encoding: base64";
echo "Content-Disposition: attachment; filename=\"$5\"";
base64 "$5"
echo "--B835649000072104Jul07";
) | sendmail -t