美工学习 发表于 2023-12-1 16:36:57

WordPress以及表单插件Gravity Forms和Contact Form 7无法发送邮件问题解决

这其实还是一个Win主机上用WordPress建站的常见问题。
起初我发现用Gravity Forms建立的表单无论如何都不能发送提醒邮件,遂尝试了N种方法,走了N多的弯路。然后惊讶的发现我的Wordpress本身居然也不能发送邮件,也就是找回密码等功能失效。1. 百度解决方案,凡是提到Gravity Forms的中文网页都只是浅显的在介绍这款插件而已。对我来说百度果然还是不够用的。
2. 于是看了Google,先是找到Gravity Forms官方网站,里面也是一大堆不能发送邮件的话题。总结下来有这样几类:
a) 自动发送的邮件被系统当成垃圾邮件处理了。我查了下自己的垃圾箱,没有。
b) 服务器不支持PHP的mail()函数。检查结果居然正是如此。PHP基础非常差的我只知道在Win主机下用mail()不靠谱,大量的替代方案是用一个叫“WP Mail SMTP”的插件代替。
于是我安装了WP Mail SMTP。先用默认的设置尝试着发送测试邮件,失败。尝试改变设置,用自己的126邮箱经过STMP认证发送邮件,这次成功了。测试WP找回管理员密码的功能,也恢复了!
3. 于是回到Gravity Forms尝试发送提示邮件,居然还是收不到。有个老外说先看看你用的WP插件是不是还在用mail()函数发邮件,如果是,就改成wp_mail(),因为WP Mail SMTP是通过改变wp_mail()的发送方式实现邮件发送的。于是我检查了我的Gravity Forms,它确确实实的是用wp_mail()的…这个时候我有点急了,想WP有那么多表单插件,我何苦吊死在一个Gravity Forms上呢,Gravity Forms还是一款收费插件呢,由于没有序列号(一直用着旧版本),它官网上的答疑很多对我都是不开放的。
4. 于是我尝试着很多国内WP网站都在用的Contact Form 7,简称CF7。果然是一个不错的插件,比Gravity Forms轻便了很多,而且汉化得比较彻底。建立完自己的表单后,尝试提交表单,还是失败,提示我表单没有发送出去。
5. CF7国内用的比较多,于是很快百度到了解决方案。原来在后台邮件设置的时候发送人一定要用我在WP Mail SMTP设置的发件人,否则是无法提交的。于是修改发件人,果然表单就提交成功了。查看邮箱,提示邮件也同时收到了。
6. 但是CF7有一个缺点,它太小巧了,小巧到连记录表单数据的功能也没有,只是单纯的把数据通过邮件发送出去。有时候邮件也不够靠谱,丢包、被当垃圾邮件处理掉、邮件服务器当机了,各种情况都有可能发生,如果是给客户做网站,客户可能会抱怨…我还是需要保留能在WP后台也记录下用户提交的表单数据的功能。
7. 这样看来还是先回到Gravity Forms上来吧。看到过有这样一篇文章提到过要把发件人改成{admin_email},我尝试过但发送失败。借鉴到用CF7的时候要把发件人改成WP Mail SMTP的发件人,于是尝试着把Gravity Forms也改成这个发件人,bingo!附上本文提到的3个WP插件的正确设置图解
WP Mail SMTP的:Gravity Forms的邮件提示(Notifications)设置界面:CF7的邮件设置部分:这样就可以了


页: [1]
查看完整版本: WordPress以及表单插件Gravity Forms和Contact Form 7无法发送邮件问题解决