发送邮件附件为空

发送邮件附件为空

我正在尝试将附件添加到我的 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

相关内容