php技术博客
让天下没有搞不定的bug~

Contact Form 7发送邮件提示这个错误:Failed to send your message. Please try later or contact the

Contact Form 7发送邮件提示这个错误:Failed to send your message. Please try later or contact the…………

Contact Form 7 是一个不错的表单生成工具,可以让我们方便的在博客之中生成各种需要的表单应用,譬如在做留言或者联系人的时候尤其好用。但我在正确配置了插件和博客之后测试Contant Form 7生成的表单却总是出现发布邮件失败的错误,截图如下:

image

Failed to send your message. Please try later or contact the administrator by another method.

于是网上搜索了对这个问题的处理,发现很多人是因为博客主机自身不支持发送邮件并且没有安装第三方的SWTP邮件发送插件造成的,我不属于这种情况,因为我安装配置好的WP-Mail-SWTP发送测试邮件是成功的,并且Wordpress正常的评论邮件通知功能也都正常,这说明第三方的邮件发送插件运行正常。那剩下的就只有contact form 7插件的问题了。网上并没有多少介绍这个情况的文章,于是决定自己处理一下。

发送邮件不成功根据之前的经验一般都是数据格式的问题,于是直接找插件代码。之前WP玩儿的并不多,并不熟悉插件的代码结构。不过翻了下之后还是很容易的找到了插件发送邮件模块的代码文件,如图(选中的文件):

image

contact-form-7/includes/classes.php

找到文件,修改调试了一下,最后发现是插件在调用wp_mail()函数时传入的第四个参数$headers结构有问题导致的发送邮件失败。很深入的原因我没有再去查找,猜测可能是$headers变量之中的邮件发送人字符串结构有问题造成的,当然也有可能是因为SMTP服务器自身的不同验证造成的(这种情况我就遇到过)。有时间会去再深入研究一下,不过就这个问题,修复方法很简单。只需要剔除$headers之中有From的那一句就可以了,因为邮件函数自身就已经包含有$sender的信息,因此其实对wp_mail()这个函数而已,整个$headers本身都是可选的,不过为了防止产生其他的意外,这里我还只是用一句空字符串替代了源代码,修改如图:

image

Ps:不要忘记点击”更新文件”进行保存

修改之后插件发送邮件正常,效果如图:

image
发送成功

image
接收到邮件

最后总结一下

Content Form 7插件发送邮件失败常见两原因:

  1. 空间服务器不支持邮件函数
    解决:安装第三方邮件插件(例如WP-Mail-SMTP )来发送邮件。
  2. 插件或者SMTP服务商出现问题,这往往都是一丁点儿的小毛病引起的。
    解决:可以参照本文思路修改下相关内容试下。

另外附录我所使用的环境

  • 香港空间,不提供邮件服务;
  • 网易163的SMTP邮件服务;
  • Contact Form 7版本3.1;
  • WordPress版本3.3.1中文;

One more thing……

如果你遇到相似的问题或者有更好的想法想要探讨,欢迎在下面留言!

    技术分享,技术交流,小涛与您共同成长
赞(0)
未经允许不得转载:PHP技术博客 » Contact Form 7发送邮件提示这个错误:Failed to send your message. Please try later or contact the