WordPress Contact Form设置:用AI配字段和通知,收不到邮件先查这步

倪叶明

作者

更新于 ·发布于

联系表单这东西最坑的地方,是它坏了不会告诉你。前台照样弹「提交成功」,后台一切正常,就你邮箱里没信。问题出在wp_mail()这个函数上:它返回true,只代表这次请求在程序这一层没报错,不代表收件人真的收到了邮件。所以做WordPress Contact Form设置,真正要盯的不是表单长得对不对,是提交之后那封信走到哪一步了。

WordPress自己不带联系表单,要做只能靠插件。wordpress.org插件目录里的Contact Form 7活跃安装10+ million,当前版本6.2.4.1,作者Rock Lobster Inc.,它负责把表单放到页面上、把提交的请求发出去,留言本身不存,要另装Flamingo留档。猎者出海做英文独立站这段时间,这种「页面都做好了,卡在一个看不见的环节」的情况见得不少。

  • 三个插件各管一段:Contact Form 7管表单和通知,Flamingo管留言存档,WPForms Lite是一条从建表单到反垃圾都管的路线。
  • Contact Form 7要求WordPress 7.1或更高、PHP 8.3或更高,装之前先对一遍。
  • 安装三步:上传文件夹、在Plugins里启用、后台出现Contact菜单。
  • 收不到邮件,按「后台留言列表、收件箱、垃圾箱、邮件设置」这个顺序查。

这篇从选插件、对版本、建字段、配通知一直讲到测试提交,把一条真能收到信的联系表单做出来。想从头看整个建站流程,可以翻WordPress建站教程。

联系表单在WordPress上到底靠什么实现:三个插件各管一段

WordPress装好之后,后台没有「联系表单」这个菜单。要做,就得装插件。wordpress.org目录里做这件事的插件性质不一样,先分清谁管哪一段,再决定装哪个,能少走一段弯路。

Contact Form 7:10+ million站在用的那个

这款插件作者是Rock Lobster Inc.,已经被翻译成69个语言区域。目录页上的评分是4 out of 5 stars,一共2,187条评价,其中1星408条。它提供1个区块,名字就叫Contact Form 7,作用是把已经建好的联系表单插进页面。它管的是「表单长什么样、收哪些字段、提交之后发不发通知」这一段,留言不落在数据库里。

1星评价占比不低,跟它的配置方式有关系:字段、邮件、验证规则都要在后台一项项填,填错一项表面上看不出来。装之前心里有数,出问题的时候就不会以为是插件坏了。

Flamingo:因为Contact Form 7本身不存留言

Flamingo插件页第一句就写清了它的定位:「Flamingo is a message storage plugin originally created for Contact Form 7 , which doesn’t store submitted messages.」说白了,它是给Contact Form 7补一个存档功能。当前版本2.6.4,活跃安装800,000+,翻译成45个语言区域,评分4.2 out of 5 stars,121条评价。

启用之后后台菜单里会出现Flamingo,所有通过联系表单提交的留言都列在那里,可以搜索。这些数据存在托管网站的服务器数据库里,可能包含提交者的个人信息。它不负责发信,只负责留档,邮件那条路断了,留言还在后台。

WPForms Lite:拖拽加AI起步的那条路

WPForms是AI拖拽式WordPress表单构建器,联系表单、反馈表单、订阅表单、支付表单都能做。插件页写自带2100+预建模板,用拖拽构建器或者让AI先起个头,能在不到5分钟里做出一个表单。它提供1个区块,名为Wpforms Form Selector,表单100%响应式、移动端友好。

它的反垃圾是自带垃圾防护,再集成hCaptcha、Google reCAPTCHA和Cloudflare Turnstile。品牌名写法官方页专门列了:WPForms正确,WP Forms、wpforms、wpform都不正确,写文章、写给客户看的时候别写错。选它的理由是一个插件把建表单和反垃圾一起管了,代价是后台多一套要学的东西。

装之前先对版本:Contact Form 7要WordPress 7.1、PHP 8.3

版本对不上,装完的症状不是弹一句「你的版本不够」,而是白屏、菜单不出来、后台点开一片空白。装之前先去主机面板看一眼PHP版本,比装完再回查省事。

wordpress.org 官方页面截图
wordpress.org 官方页面
插件 最低WordPress 最低PHP 当前版本 活跃安装
Contact Form 7 7.1 or higher 8.3 or higher 6.2.4.1 10+ million
Flamingo 6.7 or higher 7.4 or higher 2.6.4 800,000+

两个插件的最低要求不一样,Contact Form 7要的PHP比Flamingo高一截。主机PHP只满足Flamingo、不满足Contact Form 7的时候,先装Contact Form 7会直接出问题。一次把PHP切到8.3或更高,两个插件都不用再操心。WPForms Lite的最低版本要求写在它自己的插件页上,装之前顺手看一眼。

Contact Form 7测试到WordPress 7.1.4,WordPress官方下载页当前提供的版本也是7.1.4,官方推荐的PHP是8.3或更高、MySQL 8.0或MariaDB 10.11或更高。两边对得上,说明新装一个站直接用当前版本,不会撞在版本这道门槛上。老站升级要另说,主机上的PHP可能还停在几年前。

还有一条要提前知道:Contact Form 7的6.2版本把最低PHP要求抬到了8.3。主机还停在旧版本的站,升级插件之前先把PHP切上去,顺序反了就是白屏。

怎么做:从装插件到前台提交成功,五步走完

Contact Form 7的插件页只写到安装那一步,字段怎么建、通知怎么配,详细内容在contactform7.com的文档里。下面按一条表单从装到能收到信的过程走一遍,每一步带上没成功时该回查哪里。

  1. 装并启用。把整个contact-form-7文件夹上传到/wp-content/plugins/目录,然后在Plugins > Installed Plugins页面启用。启用后WordPress后台会出现Contact菜单,看到这个菜单就算装好了。菜单没出现,先回查插件是不是真的启用成功,状态还是不是Active;还是不行,去看插件安装失败那篇。

  2. 建表单字段。在Contact菜单里新建表单,先想清楚这个表单是收什么的:谈合作要公司名、需求描述、联系方式,报问题要页面地址、浏览器版本、复现步骤。字段清单可以先让AI起草,建的时候人工在后台一个一个加。表单建完记得保存,没保存的表单在第5步的区块里选不到。

  3. 配通知与自动回复。收件地址填自己的邮箱,这个地址决定通知发到哪。自动回复是给提交者看的那封,文案可以让AI起草,人工粘进插件的邮件设置里。自动回复里写一句「我们会尽快回复」就够了,不要承诺具体多少小时,承诺了做不到反而难看。通知没发出去,第一个回查的就是这个收件地址有没有填错。

  4. 装Flamingo兜底。同样把整个flamingo文件夹上传到/wp-content/plugins/目录,再在Plugins菜单里启用。启用后后台出现Flamingo菜单,每条提交都会进留言列表。留言列表是空的,先回查Flamingo有没有启用,再回查第2步的表单有没有真的提交成功。

  5. 嵌页面并测提交。打开联系页,在区块编辑器的插入器里找Contact Form 7区块,选中第2步建好的表单,插进去。保存页面,用无痕窗口在前台填一遍提交,然后回后台看Flamingo的留言列表里有没有这一条。区块在插入器里找不到,回查插件是否启用、编辑器是不是区块编辑器。

这五步里,第3步和第4步是最容易被跳过的。只装Contact Form 7不装Flamingo,邮件一出问题就什么记录都没有;装了Flamingo不配通知,后台有留言但你的邮箱是安静的,回复就慢了。两个都装上,才算把「收得到」和「留得下」这两件事分开保住。

免费能做到哪一步:区块能嵌,短代码和不装插件这两条本文不教

官方页写明Contact Form 7提供1个区块,WPForms提供1个区块Wpforms Form Selector,嵌页面就走区块这条路。WPForms页还写可以用区块把联系表单嵌到任意页面,带优化过的标题和描述。要走免费路线,先把区块这条用熟。要确认有没有付费功能、付费多少钱,去插件页看它自己的价格说明,别看别人的总结。

Contact Form 7的短代码写法,官方插件页没写;WordPress核心也没有自带联系表单功能。这两条本文不教。不装插件这个方向,走到官方支持的区块为止,不再往下教改主题文件。往主题的模板文件里塞表单代码,出问题的时候会连累整站,排查成本比装一个插件高得多。

还有一件跟表单直接相关的事:联系页的加载速度。访客点进联系页,页面迟迟不出来,人就走掉了,表单做得再好也没人填。速度这块看WordPress速度优化,表单页本身不需要什么特效,越轻越好。

提交成功却收不到邮件:先看后台留言列表,再查这四处

前台提示提交成功,邮箱没信。先分清两件事:提交本身成不成功,和通知邮件发没发出去,是两条线。后台Flamingo的留言列表里有这条记录,说明提交成功了,问题卡在邮件这一段;留言列表里也没有,说明卡在提交那一段,跟邮件无关。按这个分岔口走,能省掉一半乱试。

先说最要命的,wp_mail()的返回值。官方文档写得很直接:「A true return value does not automatically mean that the user received the email successfully. It just only means that the method used was able to process the request without any errors.」函数说「我处理完了」,不等于对面收到了。看到返回true就认定邮件发出去了,是这类问题里最常见的误判。

还有个事,php.ini里的SMTP和smtp_port。官方写这个函数要工作,php.ini里得设好SMTP和smtp_port,端口默认25。共享主机上这两项经常是空的,函数调用了不报错,信就是走不出去。这一项自己看不到,要问主机商,或者去主机面板的PHP设置里翻。

对了,传给wp_mail()的参数也得看。$to里的所有邮箱地址必须符合RFC 2822,格式不对会被拒;$attachments里的文件名必须写成文件系统路径,只写文件名不行。这两个参数是插件替你拼的,但收件地址是你填的,地址里多一个空格、少一个点,都可能让整封信发不出去。

最后是wp_mail_content_type。默认内容类型是text/plain,不允许用HTML。有人为了让通知好看,用过滤器把类型改成HTML,发完忘了改回text/plain。官方专门提醒,不改回会给WordPress本身或者插件、主题发出来的其他邮件带来意外问题。改过这一项的话,先改回去再看。

为什么按这个顺序查:从「有没有留下记录」倒推最快。留言列表有、收件箱没有,说明提交通了、邮件没通,就往后面几处查;两边都没有,说明提交这一层就没成,回第3节看插件启用和表单插入。查的顺序对了,每一步都能排除掉一批可能。

五个最容易踩的坑:白屏、进垃圾箱、缓存页、留言丢失、后台变卡

坑一,升级后白屏。Contact Form 7一次版本更新能把整个后台干白。用户wyze在评价页说一次更新破坏了5个客户站点,jbligh说插件突然不兼容他的PHP版本,得另找插件。升级前先在测试站过一遍,或者至少确认主机PHP已经到8.3。

坑二,通知进垃圾箱。信发出去了,落在垃圾箱里,跟没发出去看起来一样。Contact Form 7支持论坛有主题就叫「Going to spam」。反垃圾只用插件自带的正规手段,WPForms集成了hCaptcha、Google reCAPTCHA和Cloudflare Turnstile,用这些就够,别去想绕验证的路子。

坑三,缓存页上的表单。整页缓存把联系页存成静态文件,表单提交走的还是缓存里那份,出问题很难看出来。Contact Form 7支持论坛有主题叫「Contact Forms on cached Pages」。把联系页排除出整页缓存,或者给它单独设短一点的缓存时间,再看提交正不正常。

坑四,留言丢失。Flamingo支持论坛有主题叫「Some submissions are missing」。用户Skylabb称这个插件只适用于用PHP mail的联系表单,外部SMTP服务器下测试后数据库里没收到留言。这条没有官方结论,只当线索用:用了外部SMTP的站,别只信留言列表,邮件和列表两边都看。

坑五,后台变卡或者500。装完插件后台变慢,看插件导致后台变卡;启用后直接500,看启用插件后500错误。这两个现象都跟插件和主机环境有关,不是表单本身的事。

还有一个附带的:站刚上HTTPS,页面打不开,表单收发也会跟着异常。先把HTTPS修好,看HTTPS后打不开页面,再回来测表单。

评价页上的原话:用户碰到的具体问题与使用反馈

下面几条是插件评价页上用户自己写的话,不是官方结论,当线索看。看的时候带着一个问题:这条跟我现在的情况对不对得上。

用户christian443说,6.2版本把最低PHP要求从6.1系列的7.4提高到8.3,导致部分站点出问题。这条对得上的情况是:主机PHP还停在7.4,插件自动更新到6.2,然后白屏。处理动作只有一个,先把PHP切到8.3。

用户Skylabb说,Flamingo只适用于用PHP mail的联系表单,不适用于外部SMTP邮件服务器,测试后数据库里没有收集到留言。这条对得上的情况是:站上用了外部SMTP,前台提交正常,后台留言列表也是空的。

用户allamehw说,Flamingo导出非拉丁字符(比如波斯语)时有个小bug,默认编码是Western,切换到UTF-8可以解决。这条平时用不上,真要把留言导出来做备份、做客户名单的时候才会撞上,先记着。

用户dougy99说,在还没配好邮件系统的时候,这个插件简单但好用。用户nolanrichardson说,它是Contact Form 7很好的补充,还没配好邮件服务器的时候很需要。这两条放在一起看,Flamingo的价值在「邮件不通也有记录」,不在「替你发信」。想清楚这一点,装它的理由就清楚了。

用AI配WordPress联系表单:能帮哪三步,人要核什么

AI在这件事上能省的是起草和整理,省不了点后台。它能干的活有三件,每件都对应一个具体动作。

  1. 起草字段清单和标签文案。告诉AI这个表单是收什么咨询的,让它列出该有哪些字段、每个字段的中文标签和一句占位提示。拿到清单之后,人工在Contact菜单里一个一个建,AI碰不到你的后台。

  2. 起草通知邮件和自动回复邮件。通知是发给自己的,写清谁提交了什么、怎么联系;自动回复是发给对方的,一句话确认收到就够。文案出来之后,人工粘进插件的邮件设置。

  3. 把「收不到邮件」整理成排查清单。让AI按从易到难排一遍动作,每个动作写明在哪个后台页面看什么结果。拿到清单之后,人按顺序在后台一项项点开看。

下面三条提示词是本文给的示例,不是官方模板,可以直接复制去用。

「我在WordPress上用Contact Form 7建联系表单,请列出联系表单常见的6个字段,每个字段给一个中文标签和一句占位提示,不要写代码。」

「请写一封联系表单提交后的自动回复邮件,中文,80字以内,包含一句我们会尽快回复,不要承诺具体时限。」

「我的WordPress联系表单提交后收不到邮件,请按从易到难列出6个排查动作,每个动作说明在哪个后台页面看什么结果。」

有三件事只能人做,AI替不了。在WordPress后台Plugins > Installed Plugins里确认插件已经启用,再到Contact菜单里确认表单真的存在。在插件的邮件设置里填好收件地址,然后到前台提交一次测试表单,回后台看Flamingo的留言列表里有没有这条记录。看测试提交之后收件箱和垃圾箱里有没有那封通知,据此决定是改邮件设置还是改反垃圾设置。这三步做完,才叫一条表单真的通了。

把这几步的检查结果整理成一张清单、对照官方文档逐条核对的活,可以交给猎者出海的AI Agent。装好表单只是建站里的一环,从空服务器到上线,猎者出海的AI Agent里分了十个阶段,每个阶段有一道闸门,眼下这一步过不过得去,它会给判断。

常见问题

Contact Form 7是免费的吗?

它在wordpress.org插件目录里发布,当前版本6.2.4.1,从目录安装。要确认有没有付费项、多少钱,看插件页上的价格说明。Flamingo同样在目录里。

Contact Form 7和Flamingo必须一起装吗?

不是必须。Contact Form 7本身不存留言,邮件这条路正常的时候,只装它也能收到通知。想要每条提交都在后台留一份记录,再装Flamingo。

表单提交成功但邮箱没信,第一步看哪里?

先看后台Flamingo的留言列表里有没有这条。有,说明提交成功,问题在邮件这一段;没有,回查Flamingo有没有启用、表单有没有插对页面。

换了PHP版本之后后台白屏怎么办?

先确认主机PHP已经到8.3,Contact Form 7 6.2起最低要求是8.3。还没到就先在主机面板切上去,再启用插件。

联系页被整页缓存了,表单还能用吗?

先把带表单的页面排除出整页缓存,再看提交正不正常。Contact Form 7支持论坛有「Contact Forms on cached Pages」这个主题,可以对着看。

表单字段到底要建几个?

看这个表单收什么。谈合作要公司名和需求描述,报问题要页面地址和浏览器版本。清单可以让AI起草,建的时候还是人工一个一个加。

表单这东西,做完之后一年也不会再打开看。真出问题的时候,多半是访客先发现,你不会知道。装完花十分钟测一次,比出事后翻论坛强。整站从空服务器到上线,猎者出海的AI Agent每个阶段有一道闸门,表单这种小环节也在里面。好了,就写到这里。

发表评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注