Centos

sendmail 附件為空

  • July 8, 2020

我正在嘗試在我的 sendmail eml 文件中包含一個附件。目前的eml文件(order.eml)有以下內容

From: Sender <sender@email.com>
To: client@email.co.za
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 字節)。我不知道這是為什麼,我正在努力解決它

您需要做的是將文件包含在

Content-Disposition: attachment; filename="por5151.pdf"

生成.eml文件時的行。您可以使用該base64實用程序執行此操作:

base64 por5151.pdf

--B835649000072104Jul07--確保在其後面插入閉合邊界 ( )。

sendmail不會解釋您交給它的文件,因此不會神奇地插入.pdf文件的內容。

我創建了下面的腳本來附加一個 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

引用自:https://unix.stackexchange.com/questions/223656