Home >php教程 >php手册 >解决PHP mail发送UTF-8中文邮件乱码

解决PHP mail发送UTF-8中文邮件乱码

WBOY
WBOYOriginal
2016-06-06 20:08:561633browse

在这里,我将解决一个问题,也许很多人遇到过,困惑又不知道如何去做的问题。 如何发送中文邮件时没有乱码? 在这里我将告诉你如何发送UTF-8编码格式的中文电子邮件。本文不涉及GBK编码或者GB2312编码格式的中文邮件。 解决这个其实是很简单的。请读下面的代

在这里,我将解决一个问题,也许很多人遇到过,困惑又不知道如何去做的问题。

如何发送中文邮件时没有乱码?

在这里我将告诉你如何发送UTF-8编码格式的中文电子邮件。本文不涉及GBK编码或者GB2312编码格式的中文邮件。

解决这个其实是很简单的。请读下面的代码。引用你的电邮标题为’=?UTF-8?B?’和’?=’。

你可以选择使用HTML编辑你的邮件内容,只是别忘了使用utf-8字符编码。

邮件Header内容

MIME-Version: 1.0
MIME版本(MIME-Version),这个头部域在邮件消息的报文用一个版本号码来指明消息遵从的MIME规范的版本。目前版本是1.0。
Content-Type: text/html; charset=UTF-8;
支持HTML格式,UTF-8编码。

Content-Transfer-Encoding: 8Bit

内容传输编码,8位元ASCII码。

X-Mailer: LixiPHP

发送邮件的系统名,可以随便写。

From: =?utf-8?B?发送邮件人的姓名?= <from_email_address>
发送的邮件地址</from_email_address>
To: =?utf-8?B?接受邮件人的姓名?= <to_email_address>
接受的邮件地址</to_email_address>
Subject: =?utf-8?B?邮件标题?=
邮件标题
通过查看邮件的源代码,我可以看到:

PHP Mail代码

public function send_email($to, $from, $subject, $message,  $fromname = ”,  $toname=”) {

  if($toname) {

    $to = ‘=?UTF-8?B?’.base64_encode($toname).’?= ‘ . $to;

  }

  if($fromname) {

    $from = ‘=?UTF-8?B?’.base64_encode($fromname).’?= ‘ . $from;

  }

  $headers = ‘From: ‘.$from."\r\n".

  "MIME-Version: 1.0\r\n" .

  "Content-Type: text/html; charset=UTF-8; format=flowed\r\n" .

  "Content-Transfer-Encoding: 8Bit\r\n" .

  ‘X-Mailer: PHP/’ . phpversion();

  $subject = ‘=?UTF-8?B?’.base64_encode($subject).’?=’;

  //send email

  mail($to, $subject, $message, $headers);

}

这是一个简单的UTF-8邮件发送功能,它把头部信息中的中文通过加密来解决中文乱码的问题。

(...)
Read the rest of 解决PHP mail发送UTF-8中文邮件乱码 (3 words)


© lixiphp for LixiPHP, 2013. | Permalink | No comment | Add to del.icio.us
Post tags: mail, PHP, UTF8

Feed enhanced by Better Feed from Ozh

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn