关于smtp邮件mail()函数问题

2019年8月31日19:21:33 发表评论 91 浏览数

这几天一直在玩云顶之弈,沉迷于吃鸡不能自拔,所以没怎么关注网站的事情,直到有个好友给我说邮件不能发送了!提示是:

无法发送电子邮件,可能原因:您的主机禁用了mail()函数

 

 

第一步肯定是百度

百度到的解决办法:

对应普通虚拟主机来说,要开启 fsockopen(一般是在主机商提供的管理后台中可以开启,不会的请联系主机商客服) 。

1. 在网站的 /wp-Includes/ 目录下找到并打开 class-smtp.php 大概是 274-282 行的位置(不同版本WordPress可能行数不同),找到如下代码:

$this->smtp_conn = @stream_socket_client(
$host . ":" . $port,
$errno,
$errstr,
$timeout,
STREAM_CLIENT_CONNECT,
$socket_context
);

将此代码注释掉或者删除,然后修改为以下代码:

 $this->smtp_conn = fsockopen($host, $port, $errno, $errstr);

修改后,如果还是无法发送邮件,在上面步骤完成的情况下继续添加如下代码:

/**
* 修复 WordPress 邮件发送”
* 以QQ邮箱为例**/
function mail_smtp( $phpmailer ){
$phpmailer->From = "[email protected]"; //发件人
$phpmailer->FromName = "技术宅"; //发件人昵称
$phpmailer->Host = "smtp.qq.com"; //SMTP服务器地址
$phpmailer->Port = 25; //SMTP端口,常用的有25、465、587,具体谷歌百度
$phpmailer->SMTPSecure = ""; //SMTP加密方式,常用的有SSL/TLS,具体谷歌百度
$phpmailer->Username = "[email protected]"; //邮箱帐号
$phpmailer->Password = *********; //邮箱密码
$phpmailer->IsSMTP(); //使用SMTP发送
$phpmailer->SMTPAuth = true; //启用SMTPAuth服务
}
add_action('phpmailer_init','mail_smtp');

执行以上操作后您网站的邮件收发功能应该就可以实现了。如果还是没法解决,这可能就是只修改代码无法解决了,请联系主机商解决处理吧。

 

我测试了,第一步么有用,第二步是用你的qq邮件作为smtp

但是! qq邮件有发邮件有限制!!如果只是每天50封以内应该没问题,超出了就不行了哦

当然你也可以选择163或者123等邮箱,应该都差不多或多或少有限制!

最后只能考虑国外邮箱或者是自建邮箱

重点来了:

我选择自建邮箱,刚好,宝塔管理面板有自建邮局服务器

关于smtp邮件mail()函数问题

这边多一个废话,邮局服务不能使用cloudflare加速的域名,因为cloudfare必须要使用他的dns,宝塔检测不到,会提示域名未解析

按照步骤做域名解析安装完邮件服务器,域名解析超简单,不多说

装完之后点击;添加域名,添加一个一级域名进去

然后做mx记录和txt记录

注意:如果使用的是百度域名。添加DKIM记录的txt记录会有字数限制,此记录值如果超过了200字需要给百度客服添加工单,需要百度客服后台人工添加

 

添加完毕之后设置一个账号,至此,你的smtp自建邮箱算是搭建完毕了。

但是是默认的未加密的25端口,如何开启465端口我也不知道,毕竟我也是个新手

我也正在论坛询问,可不可以直接开个465端口加密邮件服务,这样你好我也好

 

zdgcc

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: