WordPress的功能很强大,可扩展性也很强大,博客搭建完成之后,需要不断地改进完善,这样自己的博客才能够越来越好。

polaris的博客搭建完成后,想要备份博客,备份方法有多种,其中有一种是通过WordPress Database Backup插件实现。该插件提供了定期备份功能,有一个选项是发送备份数据到指定的邮箱中。然而设置之后却发现无法发送到指定的邮箱中。当时也就算了,没有细细的研究。

今天想要在博客上实现评论回复邮件通知的功能,这样有利于吸引游客再度光临。在网上一查阅,发现Windows主机+IIS+php配置,不支持php的mail()函数发送邮件,只是简简单单的提供smtp组件,无奈评论回复和数据库备份的邮件发送都不能实现。而国内很多服务器都是该种配置,polaris购买的空间就是这种配置,于是需要找到一种解决方法。

在网上一搜,看到好多关于wp-mail-smtp插件的教程,一一测试,可是发现没有一个好用。看到这些文章的评论,有不少人跟polaris一样,按照他们的方法配置怎么也不成功,而且改用了若干邮箱类型,都是以失败告终。通过自己的不断尝试,终于解决了。

1 配置wp-mail-smtp插件

借用网上的一些翻译结果。

From Email:
发送者的邮件地址,也就是对方收到邮件后看到的发件人地址。
From Name:
发件人姓名。
Mailer:
Send all WordPress emails via SMTP.
Use the PHP mail() function to send emails.
这里要注意一下,有的朋友的空间不支持mail()函数,通常是Windows环境的主机。如果不支持此函数,那么就选择上面的那个选项。

SMTP Options
SMTP服务器设置,也就是邮件发送服务器设置,如果设置错误就不会给留言的人发送邮件,当然,也不会把备份的数据文件发送到你的邮箱中。
SMTP Host:
QQ邮箱的是:SMTP.QQ.COM 谷歌的SMTP.GMAIL.COM 126邮箱是:SMTP.126.COM (大小写无所谓)
SMTP Port:
QQ邮箱的是:25
谷歌的是587,126是25。QQ帮助里说端口号是465或587,试了没成功,不知道原因。

Encryption:
是否启用加密连接
No encryption.
无加密
Use SSL encryption.
采用SSL方式
Use TLS encryption. This is not the same as STARTTLS. For most servers SSL is the recommended option.
使用TLS方式.
polaris提醒您,此处是关键。一会儿详细讨论这点。

Authentication:
用户验证
No: Do not use SMTP authentication.
Yes: Use SMTP authentication.
如果你这里用的是免费邮箱,那么都是选择yes,如果不验证的话恐怕垃圾邮件就满天飞了吧.

下面的这两项,就是你的用户名和密码。
Username: 注意:这个用户名是全名,如我的:polaris_bjx@126.com
Password: 密码就不公布了,这个插件作者比较奇怪,密码域竟然是明文显示而不是***,着实让人不爽。
update option
全部填写后点此更新设置。

Send a Test Email
发送一个测试邮件
To: (这里填写邮件地址)

好了,设置完了,测试下结果。如果看到有:

Test Message Sent
The result was:
bool(true)

那恭喜您,您的设置成功了。如果您测试失败,那请您接着往下看。

2 配置失败的解决方法

在网上可以看到,通过网上看到的方法设置,测试失败的比比皆是吧。polaris也一样,试了n多次都失败。不过幸好,最后终于成功了。在此分享两种失败解决方法:

2.1 从WordPress与服务器上找原因

在此引用柳絮轻飞的博文《配置 WP Mail SMTP 的一点经验》:

今天给wordpress博客增加评论回复邮件提醒功能,选中了WP Mail SMTP插件,配置QQ邮箱的参数一切正常,但是发送测试邮件的时候提示:ERROR: Failed to connect to server: Unable to find the socket transport “ssl” – did you forget to enable it when you configured PHP?既然是ssl错误,习惯性的从php.ini中相应行打开支持,(extension=php_openssl.dll),服务器是windows主机,重启iis发现竟然还是不支持?查明原因是php_openssl.dll这个链接库无法装入。

上网查了一下资料,原来openssl扩展是依赖于第三方库的。

要想开启OpenSSL支持,系统需要安装libeay32.dll和ssleay32.dll两个库

如果你以前安装过OpenSSL,那么你的系统目录中应该已经存在这两个文件;如果没有安装,PHP的windows发行包里同样附带了这两个文件,将其复制到%system%/system32目录下即可。

总结,windows主机如果碰到了类似 ERROR: Failed to connect to server: Unable to find the socket transport “ssl” – did you forget to enable it when you configured PHP? 这样的问题,不能只是修改php.ini了事,还要检查下libeay32.dll和ssleay32.dll两个库有没有正确安装。

BTW:但是新版本(0.8.2)的WP Mail SMTP和WP Thread Comment有冲突,请按照一下方法修改即可解决问题。

将../wp-content/plugins/wp-mail-smtp/wp_mail_smtp.php中第391-393行的以下代码注释掉或者删掉就可以了:

if ( $orig != $default_from ) {
return $orig;
}

2.2 更简单的解决方法

由于polaris租用别人的主机,让人检查libeay32.dll和ssleay32.dll库之类的有点麻烦,而且不一定能够很好的帮您解决,所以,polaris不曾测试柳絮轻飞的方法。不过polaris发现了一个更简单而且很有用的方法,不过不知道有没有缺点哦,您如知道请留言告之。

上面提到在配置Encryption时是个关键。网上很多人都说应该选择第二项:采用SSL方式。然而,polaris在选中该项后,换用各种邮箱都是失败,都有这种提示:ERROR: Failed to connect to server: Unable to find the socket transport “ssl” – did you forget to enable it when you configured PHP?这因为这个,polaris才找到了柳絮轻飞的解决方法。然而没有试验,而是另寻了一个方法。

这个方法呢,很简单,就是选中第一项:No encryption(无加密),一测试,成功了。真真高兴,折腾了半天终于成功了。没有写过WordPress相关的文章,解决了这个问题,欣喜之余便迫不及待地拿出来与大家分享,希望对您有用。