PHP发送邮件乱码问题【wordpress·发送邮件解决参考方案】

在使用WordPress发送邮件时遇到中文内容乱码的问题,通过分析`pluggable.php`、`class-phpmailer.php`和`class-smtp.php`三个核心文件,找到了完整的解决方案。在`pluggable.php`中修改`wp_mail()`函数,将邮件格式改为`plain`以避免HTML解析问题,并调整函数参数顺序。此方法适用于仅需发送简单通知的情况,对于包含复杂内容的邮件推荐使用HTML格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前转载过一篇PHP发送电子邮件的文章,但是结果发现并不能实现中文内容发送,会乱码,加上我的服务器没有启动mail函数,所有就想把这个之间塞进去。
搜索了很多,但大多都是针对标题,或者不完善导致不成功,最后在这里找到了完整解决方案:http://ju.outofmemory.cn/entry/19102
将之前写的内容进行修改成如下内容:

$header = "MIME-Version: 1.0\r\n" .
 "Content-Type: text/plain; charset=UTF-8; format=flowed\r\n" .
 "Content-Transfer-Encoding: 8Bit\r\n" .
 "X-Mailer: GreySun.top/" . phpversion();//发送邮件的系统名,可自定义

原文如下:

$header = "MIME-Version:1.0\r\n";

if($mailtype=="HTML")
 {
 $header .= "Content-Type:text/html\r\n";
 }

然后在发送即可。作者原文当中是HTML,原文我发现WP发的邮件里个一个连接无法显示。

要重置您的密码,请打开下面的链接:

<http://localhost/wordpress/wp-login.php?action=rp&key=OOgu4GmdVHPG8ZJ7fLQk&login=a>

html中吧这个链接解析为标签,导致无法显示。所有html改成plain,否则的话我还要去修改邮件正文的内容,很麻烦,加上我只需要发送通知即可,如果要发送内容更丰富的邮件,例如推送,则建议使用html。

【wordpress·发送邮件解决参考方案】

wp发送邮件涉及到3个核心文件,都是在/wp-includes目录下:

分别是调用函数集文件:pluggable.php

邮件发送管理类文件:class-phpmailer.php

以及邮件模块类:class-smtp.php

我的想法是直接跳过后两个函数直接发送
打开pluggable.php文件,找到wp_mail()函数,
将内容全部删除,然后修改为如下内容:

function wp_mail( $to, $subject, $message, $headers = '', $attachments = array() ) {

 require("../myfolder/bin/SMTP.php");
 $smtp = new smtp(true);
 return $smtp->sendmail($to,$subject,$message,$headers);
}

相应的,我吧之前函数的参数顺序做了修改

function sendmail($to, $subject = "", $body = "", $mailtype, $cc = "", $bcc = "", $additional_headers = "")

=>

function sendmail($to, $subject = "", $body = "", $additional_headers = "", $cc = "", $bcc = "")

这是最简便的方法,但并不是最可行的方法。
因为邮箱账号密码打包在类里,所有放在根目录以外的目录比较妥当。

顺便,我用WordPress弄的博客:http://www.greysun.top

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Grey Sun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值