欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php的mail函數(shù)發(fā)送UTF-8編碼中文郵件時(shí)標(biāo)題亂碼的解決辦法

 更新時(shí)間:2015年10月20日 16:57:10   投稿:lijiao  
這篇文章主要介紹了php的mail函數(shù)發(fā)送UTF-8編碼中文郵件時(shí)標(biāo)題亂碼的解決辦法,需要的朋友可以參考下

最近遇到一個(gè)問(wèn)題,就是在使用php的mail函數(shù)發(fā)送utf-8編碼的中文郵件時(shí)標(biāo)題出現(xiàn)亂碼現(xiàn)象,而郵件正文卻是正確的。最初以為是頁(yè)面編碼的問(wèn)題,發(fā)現(xiàn)頁(yè)面編碼utf-8沒(méi)有問(wèn)題啊,找了半天原因,最后找到了問(wèn)題所在。

 

1.使用 PEAR 的 Mail 類(lèi)

PEAR 的 Mail 類(lèi)可以讓你選擇使用 sendmail 或者 SMTP 方式發(fā)信,這樣的包裝好的接口很好用,你沒(méi)有必要去自己重新發(fā)明輪子。

2.關(guān)于headers 中subject 的亂碼

不要把任何除了 iso-8859-1 編碼之外的文字直接放進(jìn)subject,正確的方式是讓subject 里頭的文字符合RFC 2047 的規(guī)范,假設(shè)你的subject 處的文字的編碼是GB2312,那么正確的subject 應(yīng)該是這樣的格式
$headers['subject'] = '=?GB2312?B?' . base64_encode('標(biāo)題文字') . '?=';
如果是UTF-8 的話,把上面開(kāi)頭的GB2312 替換成UTF-8 即可。推薦在標(biāo)題處使用GB2312 編碼,因?yàn)镸TA 的分化實(shí)在是嚴(yán)重,大部分的MSP使用的都是自己開(kāi)發(fā)的 MTA,而相信國(guó)內(nèi)的大部分 MTA 無(wú)論如何都是可以支持 GB2312 編碼的。

而如果是發(fā)送到國(guó)外的MSP,則推薦你在subject 處使用經(jīng)過(guò)base64 編碼的 UTF-8 文字,因?yàn)樗麄兒芸赡懿恢С?GB2312 編碼。

3.一定在headers 中添加content-type

電子郵件的 headers 中的 content-type 處類(lèi)似網(wǎng)頁(yè)的,也是 text/plain; charset=gb2312 這樣的格式。這個(gè)選項(xiàng)主要對(duì)收郵件的客戶端有意義,可以避免在客戶端出現(xiàn)亂碼,部分的 Webmail 也會(huì)根據(jù)這里的設(shè)置對(duì)郵件的內(nèi)容進(jìn)行編碼轉(zhuǎn)換以正確顯示。你可以設(shè)想一下你用 gb2312 編碼發(fā)到 .com.tw 的郵箱時(shí)候的情況。

4.對(duì)你用來(lái)發(fā)送郵件的主機(jī)進(jìn)行正確配置

1)一定配置反向解析,因?yàn)榇蟛糠值姆枪潭?IP 都無(wú)法做反向解析,部分反垃圾郵件策略以此作為判斷依據(jù)。
2)一定配置 MX 解析,道理同上。
3)確保你的 return path 是能夠收到退信的,否則你的郵件發(fā)送服務(wù)器可能會(huì)進(jìn)入接收端的黑名單。

$subject = stripslashes($the_post['Title']); 
$headers = "MIME-Version: 1.0\r\n"; 
$headers .= "Content-type: text/plain; charset=utf-8\r\n"; 
$headers .= "Content-Transfer-Encoding: 8bit\r\n"; 
$message = stripslashes(strip_tags($the_post['Content'])); 
mail($to, $subject, $message, $headers); 

先用函數(shù)base64_encode() — 使用MIME base64 對(duì)數(shù)據(jù)進(jìn)行編碼
標(biāo)題字符串前加編碼類(lèi)型例如: =?UTF-8?B?
標(biāo)題字符串后加:?=
例如:

<?php  
 $to = "clairelume@qq.com"; //將此電子郵件地址改為自己的。  
 $name = $_POST['name'];  
 $email = $_POST['email'];  
 $subject = "來(lái)自博客讀者的郵件";  
 $subject = "=?UTF-8?B?".base64_encode($subject)."?=";  
 $headers = "MIME-Version: 1.0\r\n";  
 $headers .= "Content-type: text/plain; charset=utf-8\r\n";  
 $headers .= "Content-Transfer-Encoding: 8bit\r\n";  
 $message = $_POST['message'];  
 mail($to,$subject,$message,"From: ".$email."",$headers);  
 echo 'OK '.$name.', 您的郵件已發(fā)送。';  
?> 

這樣,發(fā)送的中文郵件標(biāo)題就不是亂碼了。

是不是很簡(jiǎn)單,其實(shí)把問(wèn)題分析透了,所有的問(wèn)題都會(huì)迎刃而解了,希望這篇文章對(duì)大家的學(xué)習(xí)有所幫助。

相關(guān)文章

  • 理解PHP中的Session及對(duì)Session有效期的控制

    理解PHP中的Session及對(duì)Session有效期的控制

    這篇文章主要介紹了理解PHP中的Session及對(duì)Session有效期的控制,Session默認(rèn)有效期為1440秒而后則會(huì)用到PHP的垃圾回收,需要的朋友可以參考下
    2016-01-01
  • 解析php下載遠(yuǎn)程圖片函數(shù) 可偽造來(lái)路

    解析php下載遠(yuǎn)程圖片函數(shù) 可偽造來(lái)路

    本篇文章是對(duì)php中的下載遠(yuǎn)程圖片函數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • PHP實(shí)現(xiàn)批量修改文件名的方法示例

    PHP實(shí)現(xiàn)批量修改文件名的方法示例

    這篇文章主要介紹了PHP實(shí)現(xiàn)批量修改文件名的方法,結(jié)合實(shí)例形式分析了php基于文件遍歷、字符串操作實(shí)現(xiàn)文件名批量修改相關(guān)操作技巧,需要的朋友可以參考下
    2019-09-09
  • 解析php中memcache的應(yīng)用

    解析php中memcache的應(yīng)用

    本篇文章是對(duì)php中memcache的應(yīng)用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • php隨機(jī)生成數(shù)字字母組合的方法

    php隨機(jī)生成數(shù)字字母組合的方法

    這篇文章主要介紹了php隨機(jī)生成數(shù)字字母組合的方法,實(shí)例分析了php生成隨機(jī)數(shù)及隨機(jī)字母的相關(guān)技巧與用法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-03-03
  • PHP 偽靜態(tài)技術(shù)原理以及突破原理實(shí)現(xiàn)介紹

    PHP 偽靜態(tài)技術(shù)原理以及突破原理實(shí)現(xiàn)介紹

    偽靜態(tài)技術(shù)比較好突破,需要自己構(gòu)造中轉(zhuǎn)注入頁(yè)面;偽靜態(tài)技術(shù)原理都很簡(jiǎn)單,就是把原來(lái)的 index.php?id=1 這種形式的URL給替換成其它形式
    2013-07-07
  • 淺談使用PHP開(kāi)發(fā)微信支付的流程

    淺談使用PHP開(kāi)發(fā)微信支付的流程

    本文是給大家簡(jiǎn)單的介紹了下php開(kāi)發(fā)微信支付的整個(gè)流程,對(duì)大家了解熟悉使用php開(kāi)發(fā)微信支付非常有幫助,有需要的小伙伴可以參考下。
    2015-10-10
  • Ajax PHP 邊學(xué)邊練 之三 數(shù)據(jù)庫(kù)

    Ajax PHP 邊學(xué)邊練 之三 數(shù)據(jù)庫(kù)

    在上一篇備忘日歷實(shí)例中,實(shí)現(xiàn)了當(dāng)鼠標(biāo)放在某個(gè)日期上時(shí),如果當(dāng)天有備忘信息則會(huì)顯示出來(lái),但是這些信息是為了測(cè)試方便事先寫(xiě)在數(shù)組中的數(shù)據(jù),不能體現(xiàn)其實(shí)時(shí)性。
    2009-11-11
  • PHP的引用詳解

    PHP的引用詳解

    本文這里向大家全面展示了PHP的引用,十分的詳細(xì),搭配示例,是篇非常不錯(cuò)的文章,推薦給有需要的小伙伴們參考下。
    2015-02-02
  • PHP商品秒殺問(wèn)題解決方案實(shí)例詳解【mysql與redis】

    PHP商品秒殺問(wèn)題解決方案實(shí)例詳解【mysql與redis】

    這篇文章主要介紹了PHP商品秒殺問(wèn)題解決方案,結(jié)合實(shí)例形式詳細(xì)分析了php結(jié)合mysql與redis實(shí)現(xiàn)商品秒殺功能的相關(guān)操作技巧及注意事項(xiàng),需要的朋友可以參考下
    2019-07-07

最新評(píng)論