2013-04-09 83 views
1

如何使用Pear正確設置多部分電子郵件的文本編碼?PHP梨電子郵件文字編碼不例外

我看了很多例子,我相信我設置正確。但是,當發送電子郵件時,即使我指定UTF-8,他們也會到達charset=ISO-8859-1

當我決定發送包含文本和HTML部分的多部分電子郵件時,就會出現此問題。我曾嘗試設置內容類型,但似乎沒有什麼區別。

以下是我正在使用的代碼。任何建議感激。

function send_html_email($to, $from, $subject, $html, $plainTxt) { 
    require_once "Mail.php"; 
    require_once "Mail/mime.php";  

    $host = "ssl://secure.xxx.com"; 
    $port = "xxx"; 
    $username = "xxx"; 
    $password = "xxx"; 

    $headers = array (
    'charset' => 'UTF-8', 
    'From' => $from, 
      'To' => $to, 
      'Subject' => $subject, 
     'MIME-Version' => "1.0" 
      ); 

    $crlf = "\n"; 
      $mime = new Mail_mime($crlf); 

    $mime->setHTMLBody($html); 
    $mime->setTXTBody($plainTxt); 
      $body = $mime->get(); 
      $headers = $mime->headers($headers); 

      $smtp = Mail::factory('smtp', array ('host' => $host, 
    'port' => $port, 
    'auth' => true, 
    'username' => $username, 
    'password' => $password)); 

      $mail = $smtp->send($to, $headers, $body); 
} 

回答

1

嘗試頭像這樣:

$headers['Content-Type'] = "text/plain; charset=\"UTF-8\""; 
$headers['Content-Transfer-Encoding'] = "8bit"; 

參考:http://pear.php.net/manual/en/package.mail.mail.factory.php#13207

作爲邊注,水滴是 「可重複使用的PHP組件的框架和分配系統」。郵件組件只是通過梨可用的許多組件之一。

+0

Thx,其實我找到了解決辦法,但除了它必須以另一種方式指定外,沒有其他答案。它在這個頁面的評論部分http://pear.php.net/manual/en/package.mail.mail-mime.example.php – user2112641 2013-04-09 20:44:14

+0

我發現了修復,我想它需要以不同的方式指定! 您將一組參數傳遞給mime get函數,如下所示。 '$ mimeparams ['text_encoding'] =「8bit」; $ mimeparams ['text_charset'] =「UTF-8」; $ mimeparams ['html_charset'] =「UTF-8」; $ mimeparams ['head_charset'] =「UTF-8」; $ body = $ mime-> get($ mimeparams);' 似乎沒有記錄在一切那麼好。在用戶註釋區域找到它。 [http://pear.php.net/manual/en/package.mail.mail-mime.example.php] – user2112641 2013-04-09 20:57:17