2016-01-13 82 views
0

我想使用.Net的SmtpClient發送一個二進制文件作爲電子郵件附件。默認情況下,我看到的行爲是附件以Base64字符串形式發送。所以,如果我在磁盤上有3mb文件,當我附上併發送郵件時,結果是在4-5mb .eml文件之間。我可以(可靠地)使用SmtpClient的附件上使用TransferEncoding.EightBit?

我快速看了一下TransferEndcoding Enum,希望得到像'binary'這樣的東西,但沒有這樣的運氣。儘管如此,如果我選擇8位編碼,附件/消息更小,文件的完整性也很好。我測試了幾次,使用不同的文件,它似乎工作。

我擔心的是這樣的:

的數據是在可以表示與不超過1000的8位 字符總線路長度國際 字符的8位字符。有關此8位MIME傳輸 擴展的詳細信息,請參閱IETF RFC 6152.

什麼決定了行長?是否幸運的是,被編碼的二進制數據碰巧有一個8位字符,在我的例子中每1000或更少的字符映射到一個新行......但使用8位編碼不是一個可行的解決方案電子郵件附件?

回答

0

Content-Transfer-Encoding: 8bit旨在用於國際文本,而不是圖像,視頻,zip文件或其他任何可能是二進制內容的文件。

如果您希望能夠通過SMTP發送包含二進制內容的郵件,則需要使用Content-Transfer-Encoding: binary,這不可能使用System.Net.Mail.SmtpClient。

要發送二進制內容,您需要使用另一個郵件庫,如MailKit(由我編寫)。事實上,我不認爲.NET的任何其他郵件庫都支持SMTP BINARY擴展。

+0

非常酷 - 謝謝你 –

相關問題