Home >Backend Development >PHP Problem >Solution to Chinese garbled characters in php emails

Solution to Chinese garbled characters in php emails

藏色散人
藏色散人Original
2020-08-15 09:38:533129browse

The solution to garbled Chinese characters in php emails: first use HTML to edit the email content; then set "Content-Transfer-Encoding: 8Bit"; then the system name and email address of the sending email; and finally set the receiving email address. .

Solution to Chinese garbled characters in php emails

Recommended: "PHP Video Tutorial"

Solution to PHP mail sending UTF-8 Chinese mail garbled

Here, I will solve a problem that maybe many people have encountered and are confused and don’t know how to do it.

How to send Chinese emails without garbled characters?

Here I will tell you how to send Chinese emails in UTF-8 encoding format. This article does not involve Chinese emails in GBK encoding or GB2312 encoding format.

Solving this is actually very simple. Please read the code below. Quote your email headers with '=?UTF-8?B?' and '?='.

You can choose to use HTML to edit your email content, but don’t forget to use utf-8 character encoding.

Mail Header content

MIME-Version: 1.0

MIME version (MIME-Version), this header field uses a version number in the email message to indicate the version of the MIME specification that the message complies with. The current version is 1.0.

Content-Type: text/html; charset=UTF-8;

Supports HTML format, UTF-8 encoding.

Content-Transfer-Encoding: 8Bit

Content transmission encoding, 8-bit ASCII code.

X-Mailer: LixiPHP

The system name for sending emails can be written casually.

From: =?utf-8?B?发送邮件人的姓名?= <FROM_EMAIL_ADDRESS>

Sending email address

To: =?utf-8?B?接受邮件人的姓名?= <TO_EMAIL_ADDRESS>
接受的邮件地址
Subject: =?utf-8?B?邮件标题?=

Mail title

By looking at the source code of the email, I can see:

PHP Mail code

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);
}

The above is the detailed content of Solution to Chinese garbled characters in php emails. For more information, please follow other related articles on the PHP Chinese website!

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