WordPress用户注册后邮箱未接收到验证链接

Hi, Everyone!Welcome to DQF's Blog,For technical exchange, Please add QQ: 905030209,Thanks!

WP-邮箱问题

问题描述

WordPress can’t send mail When the user registers,but User information already exists in the database

问题原因

1.首先检查WordPress常规设置项是否对所有人开启注册功能
2.其次检查服务器是否能成功对外发送邮件
3.此处我遇到的问题是服务器邮箱不能对外发送邮件

问题解决

  • 配置服务器邮箱
  • 测试邮箱可用性
  • 配置WP邮箱代理

CentOS7配置邮箱代理

安装sendmail与mail

yum -y install sendmail
systemctl start sendmail.service

邮件配置

1、通过文件内容发送

发送命令:mail -s 'mail test' abc@qq.com < mailtest.txt ("mail test"为邮件主题,abc@qq.com为收件人邮箱,mailtest.txt保存邮件内容)
或者:echo "邮件内容" |mail -s "主题"  abc@qq.com

2、通过管道符直接发送

发送命令:echo "this is my test mail" | mail -s 'mail test' abc@qq.com

3.上述发送邮件默认会使用linux当前登录用户信,通常会被当成垃圾邮件,指定发件人邮箱信息命令
vi /etc/mail.rc,编辑内容如:

set from=username@163.com
set smtp=smtp.163.com
set smtp-auth-user=username@163.com
set smtp-auth-password=yourpassword #此处输入邮箱认证密码
set smtp-auth=login

4.阿里云主机默认关闭25端口,只能使用465端口调用发送邮件

  • 修改/etc/mail.rc配置位置尾部增加以下内容
set bsdcompat
set from=username@163.com #之前设置好的邮箱地址
set smtp=smtps://smtp.163.com:465 #邮件服务器
set smtp-auth-user=username@163.com #之前设置好的邮箱地址
set smtp-auth-password=***** #此处输入邮箱认证密码
set smtp-auth=login  #默认login
set nss-config-dir=/etc/pki/nssdb/
set ssl-verify=ignore
  • 设置证书
cd /etc/pki/nssdb

#获取证书文件

echo -n | openssl s_client -connect smtp.163.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ./163.crt

#添加证书到证书数据库中

certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu"  -d ./ -i 163.crt

WP安装邮件插件

  • 安装SMTP插件

如下图在WP管理后台插件选项中搜索SMTP选择一个邮箱插件即可:

  • 配置SMTP插件




  • 测试邮箱插件

解决激活邮件链接无效的问题

经测试后,又出现了一个问题:发送的激活邮件链接无效,如下图(会多出一个 < ):


提示“你的密码重设链接无效”。经百度后,才了解这是wordpress的一个小bug,需要修改一下wordpress程序的wp-includes文件夹中的pluggable.php文件的一句代码(大概1899行如下图),把代码中的 < 和 > 去掉:

解决以上问题,便大功告成了,以下为成功注册结果截图:

Leave a Reply

发表评论

电子邮件地址不会被公开。 必填项已用*标注

WordPress Theme: FreeDom by DQF.