發送電子郵件,準確選擇標題的顯示方式

發送電子郵件,準確選擇標題的顯示方式

我發現 Yahoo! 的行為異常異常!當標頭以 Base64 編碼並超過 2 行時,郵件對主題行的解釋,例如:

Subject: =?UTF-8?B?4pyIIEFvIFN1bCBkYSBBbcOpcmljYSDimIUgVGFyaWZhcyBFeGNs?=
    =?UTF-8?B?dXNpdmFzIOKYhSBQYXJjZXJpYSBMQVRBTSAmIEFlcm9sw61uZWFzIEFyZ2Vu?=
    =?UTF-8?B?dGluYXM=?=

為了隔離錯誤,我希望能夠向自己發送帶有我想要的標題的電子郵件,即我可以控制自己發送的電子郵件的純文字版本中顯示的內容。

我有什麼辦法可以控制這個嗎?

我正在使用多種網頁郵件工具,但無法控制標頭中顯示的內容,並且我在谷歌上搜尋了自訂解決方案,但無濟於事。

答案1

在 PHP 中

這樣你就可以真正擁有很大的控制權。

透過使用 PHP PEAR,您可以執行以下操作:

$_SMTP = array(
    "host"      =>  "ssl://smtp.gmail.com",
    "username"  =>  "[email protected]",
    "password"  =>  "password123",
    "port"      =>  "465",
    "auth"      =>  true
);

include_once('PEAR.php');
include_once('Mail.php');
include_once('Mail/mime.php');

$mime = new Mail_mime();
$mime->_build_params['html_charset']='UTF-8';
$mime->_build_params['text_charset']='UTF-8';
$mime->_build_params['head_charset']='UTF-8';
$mime->_build_params['head_encoding']='base64';

$mime->setTXTBody("Plaintext message");
$mime->setHTMLBody("<b>HTML message</b>");

$hdrs = array(
    'From'      => '"Me" <[email protected]>',
    'Subject'   => "Test message",
    'To'        => '"Example" <[email protected]>'
);

$body = $mime->get();
$headers = $mime->headers($hdrs);

$mail =& Mail::factory('smtp', $_SMTP);

$result = $mail->send('"Example" <[email protected]>', $headers, $body);

print_r($result);

事實上,您甚至可以print_r($headers);在發送之前給您留下一些印象。有更多選項可以解決此問題,因此您可能需要對此進行研究。

在Python中

也可以使用基本函式庫在 python 中執行此操作電子郵件smtplib如上所述這裡

主要想法是設定標題,您可以使用以下命令以純文字形式設定值:

msg = MIMEText("text of the mail",'plain')
msg['Subject'] = "=?utf-8?b?Y2Fmw6k=?="

或從文字產生正確的格式:

msg = MIMEText("text of the mail",'plain')
msg['Subject'] = Header("café","utf8")

相關內容