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

Solution to Chinese garbled characters in php emails

藏色散人
Release: 2023-03-04 13:48:01
Original
3147 people have browsed it

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
Copy after login

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
Copy after login

Content transmission encoding, 8-bit ASCII code.

X-Mailer: LixiPHP
Copy after login

The system name for sending emails can be written casually.

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

Sending email address

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

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);
}
Copy after login

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!

Related labels:
php
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template