簡體   English   中英

PHP郵件utf-8問題

[英]PHP mail utf-8 issues

我試圖使用PHP mail()函數以utf-8編碼發送電子郵件。 這有一些問題。 如:

  1. 如果在電子郵件正文中存在unicode字符,那么我會收到一封標有“ Content-Type:application / octet-stream”的電子郵件。 否則,如果沒有Unicode字符,我將擁有Content-Type: text/plain; charset=us-ascii Content-Type: text/plain; charset=us-ascii 此行為不依賴於發送標頭Content-Type: text/plain; charset=UTF-8 Content-Type: text/plain; charset=UTF-8
  2. 如果主題由根據RFC2047編碼的utf-8字符組成,那么我會收到一個類似此Subject: =?us-ascii?Q?=3D=3FUTF-8=3FB=3Fw5HClsORwpfDkcKU=3F=3D?=的雙編碼Subject: =?us-ascii?Q?=3D=3FUTF-8=3FB=3Fw5HClsORwpfDkcKU=3F=3D?= 而不是預期的Subject: =?UTF-8?B?w5HClsORwpfDkcKU?=

例:

$subject = 'іїє';
$body = 'іїє';
$headers = "Content-Type: text/plain; charset=UTF-8\r\n"
    . "MIME-Version: 1.0\r\n";

mail('some-address@gmail.com', mb_encode_mimeheader($subject, 'UTF-8', 'B'), $body, $headers);

這是收到的標頭的一部分:

Subject: =?us-ascii?Q?=3D=3FUTF-8=3FB=3Fw5HClsORwpfDkcKU=3F=3D?=
User-Agent: Heirloom mailx 12.5 6/20/10
MIME-Version: 1.0
Content-Type: application/octet-stream
Content-Transfer-Encoding: 8bit

С–С—С”

由於服務器上的MTA已安裝后綴。 作為使用gmail的客戶端

電子郵件是一種非常古老,過時且困難的技術。 對於字符編碼尤其如此。 我建議使用庫,例如PHPMailer 如果您堅持從頭開始,那么真正的答案將超出您的問題范圍。 瀏覽器,客戶端等使此問題復雜化。 我無法告訴您問題的原因,但是解決方案是PHPMailer。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM