2012-11-26 62 views
1

我是新來的Perl,我想發送一個電子郵件使用Mail::Sender模塊與身體部分的HTML。我正在使用debug => 'x.log'來分析郵件發送過程。發送電子郵件使用perl郵件/發件人與HTML正文部分

Perl看起來像是在我的HTML代碼中每個'='符號和每個空格都有20個奇怪的3D(看起來像HTML的URL代碼)。在此之後,客戶端收不到電子郵件。這裏可能有什麼問題? (例如border="5"變爲border=3D"5"

我正在使用$sender->SendEnc($BODY);發送消息,並且$sender->Open({to => "$userAtFaultEmail", subject => "$email_subject", ctype => "text/html", encoding => "quoted-printable"'});打開郵件連接。

+0

您正在使用哪個模塊?有幾個電子郵件相關的模塊具有相似的名稱。 – cjm

+3

你爲什麼認爲這種行爲(quoted-printable)是錯誤的?事實上,你特別要求它! – ikegami

+0

@cjm:它由Jenda Krynicky撰寫的mail :: sender模塊。 – mrig

回答

3

這是完全自然的。在引用的可打印的 -encoding中,等號=是轉義字符,所以它必須自行轉義。轉義字符後,給出字符的十六進制數字。郵件客戶端將正確解碼。如果你不喜歡這個,你可以改變編碼,例如到UTF-8。但是,這並不常見,並且可能會對舊客戶端產生新問題。

這是關於quoted-printable的維基百科條目。此編碼的原因是編碼8位字符,而電子郵件傳統上只傳輸7位ASCII。

+2

'UTF-8'將是字符集,它不是編碼參數的有效值。用於避免實際編碼內容的值將是「8bit」。 – qqx

+0

@amon好吧,所以我在調試日誌文件中獲得正確的視圖,但現在客戶端沒有收到郵件。我是否需要在打開的命令中更改任何參數。我試圖發送表格的HTML代碼,現在它是:'$ sender-> Open({to =>「$ userEmail」,subject =>「$ subject」,ctype =>「text/html」,charset =>「utf-8」});'(它在消息中沒有html時有效) – mrig

+0

@mrig電子郵件必須遵循[MIME](https://en.wikipedia.org/wiki/MIME)標準。正如@qqx所說,編碼將是「8位」或「二進制」。這是*傳輸編碼*。如何解釋結果數據流由*內容類型*設置。將'ctype'設置爲'text/html; charset = utf-8'應該可以做到。 – amon

相關問題