使用 Contact Form 7 可以很容易让我们做出联系或者询价的表单,在普通的 PAGE 页面放 Contact Form 7 的表单代码即可生成表单,再设置一下就可以使用了。
但很多人不知道如何设置,以至于安装上 Contact Form 7 这个 WP 插件以后不能成功发送询价或留言邮件,于是应要求特写此篇教程。
首先,看你是 VPS 还是 Virtual Host(虚拟主机)。如果是后者,多数应该都支持 php mail 函数( 需要 sendmail 组建支持),这样可以实现用户注册时邮箱提醒或者评论提醒,或者提交留言和询价表单提醒。而如果你是 VPS,通常是一个裸服务器环境,并没有预装 sendmail,所以没办法发送邮件。但如果你用 WordPress 建站,则可以使用一些插件用 SMTP 模式来发送邮件解决这个问题。
更新注意:这篇文章是以前针对用 VPS 建站来写的。
如果你用的是 SiteGround 虚拟主机,就不用看这篇文章的方法了。SiteGround 设置 Contact Form 7 插件获取询盘邮件具体见这篇教程:SiteGround 虚拟主机使用 Contact Form 7 插件发送询盘邮件
在 WordPress 网站后台,你应该已经安装了 Contact Form 7 这个插件,此时你可以下载插件 WP SMTP (现在该插件已搜不到了,可以选用 WP Mail SMTP by WPForms 插件)。接着按照本教程的设置一步步来设置:
设置的难点:关键就在于 WP SMTP 的设置 和 CONTACT FORM 7 中 Mail 选项卡的配置。只要设置对,肯定没问题。
一、WP SMTP 设置一个中转邮箱(自动发询盘提醒/留言提醒的邮箱)
比如,某外贸企业网站为 www.xyzpcb.com。该企业使用网易付费企业邮箱,于是把 design@xyzpcb.com 这个邮箱作为自动发件邮箱。SMTP 服务器的设置信息均按照网易付费企业邮箱来填写。
你可以使用任意邮件服务商的 SMTP 服务器。用哪个服务商的邮箱,就填写哪个邮箱服务商的 SMTP 服务器信息。这些基本在邮箱服务商的网站常见问题里都会有,如果不清楚问一下客服。
二、Contact Form 7 设置最终接收邮箱
请按照如下截图的格式填写,保证不会出错。主要是第 2 张图 Mail 选项卡里的写法要注意准确。每一个中括号括起来的内容都是一个标签参数,按照截图那样来填写即可。
Form 选项卡中我们可以做一些改良,把原来的代码全部删除,复制以下代码粘贴进去。(如果担心有问题,可以先把当前的代码保存到记事本或文本编辑器中)
<h2 style="font-size: 25px; line-height: 35px;" data-inline-fontsize="true" data-inline-lineheight="true" data-fontsize="25" data-lineheight="35"><i class="fa fa-envelope-o"></i> We will answer your email shortly!</h2> <label> [text* your-name placeholder "Name*"] </label> <label> [email* your-email placeholder "Email*"] </label> <label> [text* your-country placeholder "Country*"] </label> <label> [text your-subject placeholder "Subject"] </label> <label> [textarea your-message placeholder "Message"] </label> [submit "Send"]
接着,配置 Mail 选项卡。
最终的效果就是客户从网站 https://www.xyzpcb.com/contact 网站联系页面上发了留言询价,这个询价内容会被 design@xyzpcb.com 邮箱发送到 judy@xyzpcb 邮箱中去,实现询价或留言的自动提醒。
在 [your-message] 下方你还可以隔一行,加上这行代码,会显示发表留言或者询价的留言者的 IP 和留言具体页面地址:
IP is [_remote_ip], from [_url]
最终收到的提醒邮件示例如下:
三、注意事项
如果你严格按照我的截图来做,却不成功,那么有两个可能:
- 1)你的最终收件邮箱如果是企业邮箱,那可能该企业邮箱的 MX 记录没有做好
- 2)可能是配置 WP SMTP 和 Contact Form 7 时测试多了。发太多一两句话的测试邮件,中转邮箱照发,但邮件服务器有反垃圾邮件机制,可能就当成垃圾邮件拦截了。
之前帮一个学员弄的时候就是这样。用 info 邮箱来做中转邮箱配置 WP SMTP 的时候发了好几封一两句话的测试邮件,网易当成垃圾邮件了,后来联系网易企业邮箱的客服,跟他说 info 这个邮箱在测试发件才解决。所以之前我走的坑比较多,大家按照我截图来做,就不会入坑了。 - 3)如果你使用的是虚拟主机商送的免费企业邮箱,则很可能是不成功的
注意细节特别是 Contact Form 7 的 Mail 选项卡,可能写错一个标签或者写错位置就会出错。
四、再来一个参考例子
某外贸企业网站为 www.xyzfpc.com。该企业使用腾讯付费企业邮箱,于是把 info@xyzfpc.com 这个邮箱作为自动发件邮箱。SMTP 服务器的设置信息均按照腾讯付费企业邮箱来填写。
最终的效果就是客户从网站 https://www.xyzfpc.com/contact 网站联系页面上发了留言询价,这个询价内容会被 info@xyzfpc.com 邮箱发送到 sales@xyzfpc.com 邮箱中去,实现询价或留言的自动提醒。
五、发送速度
表单提交的处理速度取决于你的中转邮箱服务器的处理速度。腾讯和网易两家企业邮箱,经过我多次测试,明显腾讯的海外 SMTP 服务器(hwsmtp.exmail.qq.com,如截图中所示)会在处理速度上更快一些。
目前腾讯付费企业邮箱做的很不错,结合微信等等功能也挺强的,在国外期间直接就可以微信处理邮件。以前我每次出国在国外酒店处理邮件,从国外连接国内的网易邮箱 SMTP 服务器,发送邮件非常慢(国外酒店的网速访问国内服务器简直要命)。
所以我也打算等网易付费企业邮箱到期后换用腾讯的了。
以上,本文 Over!如果对你有帮助,您可以赞助打赏,谢谢!
本站所有文章除注明“转载”的文章之外,均为原创。未经本站允许,请勿随意转载或用作任何商业用途,否则依法追究侵权者法律责任的权利。
在填写 reply to 的时候,照着文章填写,却出现这段话, Invalid mailbox syntax is used in the Reply-To field. 不可以填写[your-email] 标签,填写企业邮箱,就没有错误提示,是什么原因
@Judy 同遇到这个问题。是不是要将 your-email 换成邮箱地址,那到底填中转邮箱还是最终收到的邮箱?
完美的解决了问题,感谢料神
Sam,你好。按照教程配置后,WP Mail SMTP by WPForms 测试正常。但是在网站表单里测试,显示发送成功,但是设置的邮箱里却没有收到任何邮件。请问是有可能是哪里出的问题?谢谢。
@michael 问题已解决,仔细又检查了几遍,发现是 Contact Form 7 收件人邮箱拼写错误导致收不到测试邮件。
多谢 Sam 详细的教程和提示“注意细节特别是 Contact Form 7 的 Mail 选项卡,可能写错一个标签或者写错位置就会出错。”
@michael 该评论为私密评论
你好,料神,照着你的设置一步步来的,我用的是 VPS,使用 WP Mail SMTP by WPForms 测试是可以的,但是在网站表单系统发送就显示失败“”Failed to send your message. Please try later or contact the administrator by another method.“更换接收邮箱也没有变化。
@ryan 试出来了,contact from 7 里设置的收件邮箱不能用同网域的,不知道是怎么回事。改成 QQ 邮箱,或 gmail 就都没有问题了,但是这样,询盘不是直接到自己的公司邮箱里,有点不舒服,不知道还有没有解决方法。
你好,料神,为什么在 Additional Headers 出现 Invalid mailbox syntax is used in the Reply-To field,然后我就直接删了内容,不填。 我注册的是免费的 QQ 企业邮箱,收发邮箱都是用的是同一个域名的。配置也是按照教程里边做的。可是最后还是不成功! 测试发送邮件失败。不知道是哪里出问题了。可否麻烦料神帮忙分析一下是什么问题?
@Elvira 我也是会出现 Additional Headers 出现 Invalid mailbox syntax is used in the Reply-To field。删了内容不填测试发送页面直接加载不出来了。 亲,你的问题解决了吗?
@tina 解决了吗?同遇到这个问题
料神,我这边还是接收不了邮件,请指点,谢谢。
该评论为私密评论
料大,QQ 的免费企业邮箱可以用吗
你好,料神,为什么在 Additional Headers 出现 Invalid mailbox syntax is used in the Reply-To field 的错误了,请解答,谢谢
@lee Lee,我的问题跟你出现的一样,还没有解决
在 Additional Headers 出现 Invalid mailbox syntax is used in the Reply-To field 的错误了, 出现红框
想看料神写 postfix 的安装配置教程
sam,您好!假设我的域名是:www.abc.com。我在设置中转邮箱的时候,WORDPRESS 中的 CONTACT FORM7 中的 MAIL 的 FROM 的设置只能设置这个域名的来进行中转。如果设置其他的邮箱就出现如下的错误:
Sender email address does not belong to the site domain.
请问是怎么回事呢?谢谢!
@Lina contact form 7 的要求,必须同域名企业邮箱。所以没企业邮箱,又整个 linode VPS 就相当坑。当时 Bluehost 支持 mail 函数就不要紧
该评论为私密评论
料神老师,我是您的米课学员,请问一下 POSTFIX 这个怎么使用,能不能出一个教程呢
用 IFTTT 吧,有邮件到达会第一时间通知你,用了三年多了,屡试不爽~请叫我雷锋
@Fish123 具体咋个使用法呀
如果你要是早点写这篇文章,我就不会被领导骂了=。=
昨天在 VPS 上装了一个 POSTFIX,速度快多了,发询盘 1S 发送完成
@Liaosam nice
用 SMTP 发送询盘感觉好慢,我测试至少需要 10S 才能发送成功
@Liaosam 我是景安的主机,用的 126 邮箱非 ssl 口,确实需要那么久
难怪我现在好久都没有收到你的回复邮件了,另外可以用以下代码,可以节省一个插件哦 至于放哪里你是肯定知道的哦!
//使用 smtp 发送邮件(请根据自己使用的邮箱设置 SMTP)
add_action('phpmailer_init', 'mail_smtp');
function mail_smtp( $phpmailer ) {
$phpmailer->FromName = '常阳时光'; //发件人名称
$phpmailer->Host = 'smtp.qq.com'; //修改为你使用的邮箱 SMTP 服务器
$phpmailer->Port = 465; //SMTP 端口
$phpmailer->Username = '123@qq.com'; //邮箱账户
$phpmailer->Password = '123123123'; //邮箱密码
$phpmailer->From = '123@qq.com'; //邮箱账户
$phpmailer->SMTPAuth = true;
$phpmailer->SMTPSecure = 'ssl'; //tls or ssl (port=25 时->留空,465 时->ssl)
$phpmailer->IsSMTP();
}
对了,你要是收不到我的回复邮件,可能是被你 qq 邮箱拦截了,把我域名加入白名单就行了。
@aunsen 请问这个代码是放到哪个位置呢
Sam 哥, 如果使用的是公共邮箱,例如:126 的该怎么操作?
@Liaosam 好的,谢谢 SAM 哥,我试试
@Brooks 公共邮箱 gmail 怎么试都不行的 ,有成功的同学吗?
赞一个!依然很实用,很棒!之前怎么设置怎么不对,后来自己在 linode 上装 sendmail,问题来了:
网站第一版发送邮件没问题,后来网站出问题重装做第二版,邮件就收不到了(偶尔能有 1 2 封收到),一直很困扰,望 sam 指导 1 2。多谢!