當前位置: 首頁> 最新文章列表> 怎樣使用mb_send_mail 函數來發送中文郵件?詳細步驟解析

怎樣使用mb_send_mail 函數來發送中文郵件?詳細步驟解析

gitbox 2025-09-25

在PHP 中, mb_send_mail函數是一個用於發送郵件的多字節字符支持的郵件發送函數,特別適用於發送包含中文或其他多字節字符的郵件。相比於mail()函數, mb_send_mail能夠更好地處理UTF-8 編碼的字符集,避免了亂碼的問題。本文將詳細介紹如何使用mb_send_mail函數來發送中文郵件,包括代碼示例和步驟解析。

1. 確保環境支持mbstring擴展

在使用mb_send_mail函數之前,首先需要確保你的PHP 環境已安裝並啟用了mbstring擴展。 mbstring是PHP 中處理多字節字符的擴展庫, mb_send_mail函數正是依賴於該擴展來正確處理郵件內容的編碼。

安裝mbstring擴展(如果沒有安裝)

對於Linux 系統,您可以使用以下命令安裝:

 <span><span>sudo apt-get install php-mbstring
</span></span>

對於Windows 系統,您可以通過修改php.ini文件來啟用該擴展,找到以下行並去掉前面的分號( ; ):

 <span><span><span class="hljs-attr">extension</span></span><span>=mbstring
</span></span>

啟用後,重啟Web 服務器使改動生效。

2. 編寫發送中文郵件的代碼

mb_send_mail函數的基本語法如下:

 <span><span><span class="hljs-title function_ invoke__">mb_send_mail</span></span><span>(to, subject, message, headers, parameters);
</span></span>
  • to : 收件人郵箱地址。

  • subject : 郵件主題。

  • message : 郵件正文。

  • headers : 郵件頭部信息。

  • parameters : 附加的郵件參數(通常用於設置郵件發送參數)。

為了保證郵件能夠正確顯示中文,我們需要在subjectmessage中指定正確的字符編碼,通常我們使用UTF-8 編碼。

3. 示例代碼

以下是一個使用mb_send_mail函數發送中文郵件的示例:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 收件人郵箱</span></span><span>
</span><span><span class="hljs-variable">$to</span></span><span> = </span><span><span class="hljs-string">"[email protected]"</span></span><span>;

</span><span><span class="hljs-comment">// 郵件主題</span></span><span>
</span><span><span class="hljs-variable">$subject</span></span><span> = </span><span><span class="hljs-string">"测试郵件主題"</span></span><span>;

</span><span><span class="hljs-comment">// 郵件正文</span></span><span>
</span><span><span class="hljs-variable">$message</span></span><span> = </span><span><span class="hljs-string">"您好!這是一封測試郵件,包含中文內容。"</span></span><span>;

</span><span><span class="hljs-comment">// 設置郵件頭部,指定內容類型為 UTF-8 編碼的 HTML 郵件</span></span><span>
</span><span><span class="hljs-variable">$headers</span></span><span> = </span><span><span class="hljs-string">"MIME-Version: 1.0\r\n"</span></span><span>;
</span><span><span class="hljs-variable">$headers</span></span><span> .= </span><span><span class="hljs-string">"Content-Type: text/html; charset=UTF-8\r\n"</span></span><span>;
</span><span><span class="hljs-variable">$headers</span></span><span> .= </span><span><span class="hljs-string">"From: [email protected]\r\n"</span></span><span>;

</span><span><span class="hljs-comment">// 使用 mb_send_mail 发送郵件</span></span><span>
</span><span><span class="hljs-variable">$success</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_send_mail</span></span><span>(</span><span><span class="hljs-variable">$to</span></span><span>, </span><span><span class="hljs-variable">$subject</span></span><span>, </span><span><span class="hljs-variable">$message</span></span><span>, </span><span><span class="hljs-variable">$headers</span></span><span>);

</span><span><span class="hljs-comment">// 判断郵件是否发送成功</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$success</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"郵件发送成功!"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"郵件发送失败!"</span></span><span>;
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

4. 解釋代碼

  • 收件人和發件人:首先定義了收件人的郵箱地址$to和發件人的郵箱地址,在實際應用中,發件人郵箱地址通常從配置文件中讀取。

  • 郵件主題和正文:郵件的主題和正文都包含了中文內容。在subjectmessage中,我們沒有顯式指定編碼,但在郵件頭中通過Content-Type: text/html; charset=UTF-8指定了UTF-8 編碼,這樣可以確保中文字符不會出現亂碼。

  • 郵件頭部信息:通過設置MIME-VersionContent-Type來告訴郵件客戶端郵件內容是UTF-8 編碼的HTML 內容。

  • 發送郵件:調用mb_send_mail函數來發送郵件,函數的返回值$success為布爾值,表示郵件是否成功發送。

5. 注意事項

  • 字符編碼:郵件的字符編碼一定要設置為UTF-8,這樣才能確保中文郵件不會亂碼。可以在Content-Type中明確指定字符集為UTF-8 ,同時確保郵件的正文和主題內容使用UTF-8 編碼。

  • HTML 格式郵件:如果郵件正文包含HTML 格式(如加粗、斜體、鏈接等),需要在郵件頭中指定Content-Type: text/html ,否則郵件內容將被視為純文本。

  • 收發郵件服務器配置:確保你的郵件服務器配置正確,如果郵件發送失敗,檢查SMTP 配置或其他郵件發送參數。

6. 總結

mb_send_mail函數在PHP 中是發送中文郵件的理想選擇,它能夠處理多字節字符集的問題,避免了mail()函數中常見的亂碼問題。通過設置正確的字符編碼和郵件頭部信息,我們能夠順利地發送包含中文內容的郵件。希望本文對你理解如何使用mb_send_mail函數發送中文郵件有所幫助。