Home > Article > Backend Development > How to send emails using PHP_PHP Tutorial
The PHP applet for sending emails is very simple, but there are some things you need to pay attention to. First enter the code:
<?php $to = "gonnsai@163.com"; $user = "Gonn"; $date = date("Y年m月d日"); $headers = 'MIME-Version: 1.0' . "rn"; $headers .= 'Content-type: text/html; charset=utf-8' . "rn"; $headers .= "To: $to rn"; $headers .= "Cc: 252211974@qq.com rn"; $headers .= 'From: gonnsai@163.com' . "rn"; $subject = "珠海生活圈"; $subject = "=?UTF-8?B?".base64_encode($subject)."?="; $content = '亲爱的'."$user".':'.'<br />'; $content .= '<br />'; $content .= "感谢您注册珠海生活圈,精彩的生活从珠海生活圈开始!".'<br />'; $content .= "在珠海生活圈,您可以:".'<br />'; $content .= "查询珠海的商家情况,方便您生活与娱乐。".'<br />'; $content .= "了解最近珠海举行的活动,让您的生活更加丰富。".'<br />'; $content .= "浏览新闻热点,扩展知识面。".'<br />'; $content .= '<br />'; $content .= "珠海生活圈 -- 为建成珠海最大的商家数据库而不断努力着。 ".'<a href="http://www.zhuhailife.net" target="_blank">www.zhuhailife.net</a>'.'<br />'; $content .= '<br />'; $content .= "珠海生活圈团队".'<br />'; $content .= "$date".'<br />'; $result = mail($to, $subject, $content, $headers); if($result) { echo '邮件发送成功!'; } ?>
There are a few things to note. If the above code does not include $subject = "=?UTF-8?B?".base64_encode($subject)."?=";, you will find that the title of the email is garbled, but the body of the email is correct. The email header needs to first use the function base64_encode(), which uses MIME base64 to encode the data. Add the encoding type before the title string, for example: =?UTF-8?B?.
Also set the email type to $headers = 'MIME-Version: 1.0' . "rn";.
Excerpt from wiki: Multipurpose Internet Mail Extensions (MIME, Multipurpose Internet Mail Extensions) is an Internet standard that extends the email standard to support multiple formats of email such as non-ASCII characters, binary format attachments, etc. information. This standard is defined in RFCs such as RFC 2045, RFC 2046, RFC 2047, RFC 2048, and RFC 2049. RFC 2822, transformed from RFC 822, stipulates that the email standard does not allow the use of characters outside the 7-bit ASCII character set in email messages. Because of this, some non-English character messages and non-text messages such as binary files, images, sounds, etc. cannot be transmitted in emails. MIME specifies symbolic methods for representing a wide variety of data types. In addition, the MIME framework is also used in the HTTP protocol used on the World Wide Web.
MIME is implemented by standardizing additional fields in the headers of email messages; these additional fields in the headers describe the content and organization of new message types.
$headers .= 'Content-type: text/html; charset=utf-8' . "rn"; When the type is set to html, the email body can use HTML tags.
Several common types:
In addition, subtypes that are not yet accepted as formal data types may use independent names starting with x- (e.g. application/x-gzip). Intrinsic names starting with vnd- can also be used (for example: application/vnd.ms-excel).
Parameter can be used to specify additional information. In more cases, it is the charset parameter used to specify text encoding methods such as text/plain and text/htm. MIME sets a default subtype based on type. When the client cannot determine the subtype of the message, the message is treated as the default subtype for processing. Text defaults to text/plain, Application defaults to application/octet-stream and Multipart is treated as multipart/mixed by default.