HAPPY TOTORO 龙 猫 要 努 力 !


解决WordPress Database Backup不能正常发信的问题

wp是一款优秀的插件,可以方便的导出数据表进行备份,尤其是它的定期备份到邮箱的功能,更是懒人的不二之选。不过在blog搬家到 Hostgator之后,由于种种原因,这一插件一直没有能发挥正常的作用。但经过一番仔细的研究,终于把这个问题解决了,下面做一下简单描述以供备忘。

测试环境描述:版本:2.6.2;WP-db-backup:2.2.1;可能存在干扰的插件:Xpertmailer 0.1;硬件环境是Hostgator的Reseller主机,主域名指向ip而没有使用主机的ns服务。

在备份的时候选择发送到邮箱,不管填写什么地址都收不到备份的数据库,但是邮箱找回密码以及评论邮件发送功能一切正常。上网查了一下wp-db- backup邮件发送的相关讨论,几乎没有使用xpertmailer这个插件的,一般都是用服务器自带的邮件系统进行发送,可惜我并不想用主机商提供的邮件功能,因为我的主域名早已申请了google app服务,的强大功能是我不想放弃的。

但是抱着研究的态度,我还是登录到cpanel后台的邮件模块去看了一下,发现收件箱中已经有好几封邮件,都是退信,原因是找不到收件人地址。具体看了一下我发现,我选择的备份信箱是admin@fxiao.com,这个账号在我的google apps中是存在的,发送失败的原因是由于服务器默认为@fxiao.com这个邮箱域在它们的服务器上,而我在blog服务器上并没有 admin@fxiao.com这个邮箱地址。

初步原因可以总结为:服务器在传递邮件的时候首选的是内部路由,它根据的mx记录和我在godaddy上设定的mx记录是不同的。所以我的邮箱才没有收到信。

随后我换成了另一个邮箱xxx@.com又试验了一下,但是还是没有收到信。去cpanel的邮件记录看,有一封新邮件,还是提示没有 admin@fxiao.com这个用户。这下我明白了,服务器使用了我刚才这个邮件地址作为发件人,而因为没有在服务器上建立这个用户名被拒绝发信了。

解决的办法找到了,就是在邮件账户里建一个同名帐户,这个帐户和google apps中的邮件地址不冲突,因为它只存在于主机商提供的邮件服务器内部。 在服务器以外发往admin@fxiao.com这个地址的信都能顺利的到达我的google信箱。

但是解决问题之余,还是没有搞明白为什么wp-db-backup会用主机商的服务器发信,而没有通过xpertmailer。这只有通过研究代码来解决了。查看它的代码发现,wp-db-backup直接调用了Phpmailer->send()这个函数,但是为什么不使用@wp_mail这个最常用的函数呢?如果使用wp_mail,就可以利用xpertmail发信了。去\includes目录下查看pluggable.php中 wp_mail()的代码,发现其中并没有定义attachment功能。一时间终于恍然大悟。

至此,问题的原因和解决方法都找到了,现在系统工作正常,wp-db-backup的备份邮件通过系统服务器发送到我的邮箱,而留言、找回密码等功能通过xpertmailer发送到admin@fxiao.com这个信箱,一切都很完美。

标签:, , ,

相关日志



1条评论 | 我来说几句

2009-03-08 22:33

不错~我找这个找了好久,今天终于找到是为什么不能收到啦~

回复

添加评论




:zz :ss :p :^( :D :@ :? :-) :-( :-# :) :(s :( :$ :!o :! 8o| -_-! (h)

HAPPY TOTORO © 2006-2008 | 基于Wordpress | wpchina主机 |  |  文章(RSS) |  评论(RSS)