关于 SiteGround 外贸自建站,Contact 表单插件的使用对很多建站新手来说一直是个难点,特别是同时又涉及到企业邮箱的问题。
WordPress 的插件 Contact Form 7 (CF7) 是创建联系表单的最普遍使用的插件之一。本文讲解如何使用它来发送网站询盘信息邮件以及一些常见错误。
这篇教程涉及到这几个方面:
- 邮件发送的两种不同机制
- 虚拟主机商赠送的免费企业邮箱适合作为外贸业务企业邮箱用吗?
- 应该如何正确设置 Contact Form 7 插件?
- 怎样避免询盘通知邮件成为垃圾邮件?
- 安装 WP Mail Logging 插件来记录网站询盘表单的提交信息
- 注意事项总结
内容不难,就是文字有点多,耐心看吧。
邮件发送的两种不同机制 PHP Mail() 和 SMTP
之前写了两篇老长的建站文章之后,好久没有更新建站文章了。最近发现不少外贸人用 SiteGround 建站的时候不知道怎么去设置 Contact Form 7 留言表单。
之前写过一篇相关的教程:Contact Form7 配合 WP SMTP 来发送外贸网站询盘提醒邮件 。这篇教程写得比较早,主要是针对 VPS 建站写的。在这篇文章里,我写了这么一段话:
首先,看你是 VPS 还是 Virtual Host(虚拟主机)。如果是后者,多数应该都支持 php mail 函数( 需要 sendmail 组建支持),这样可以实现用户注册时邮箱提醒或者评论提醒,或者提交留言和询价表单提醒。而如果你是 VPS,通常是一个裸服务器环境,并没有预装 sendmail,所以没办法发送邮件。但如果你用 WordPress 建站,则可以使用一些插件用 SMTP 模式来发送邮件解决这个问题。
可能有些人看不懂,我大概解释一下:
一般来说,发送邮件基本分为两种机制,一种是 PHP Mail() 函数的方式,一种是 SMTP 的方式。前一种方式发送快,信息无需加密传输,但发件人身份无法进行验证,而 SMTP 的方式发件速度慢一些,因为会进行发件人身份验证(authentication),信息会按照端口设定(465/995)进行 SSL 或 TLS 加密。
VPS 由于是裸服务器没有安装配置 php 的相应的邮件函数或组件环境,所以无法直接发送邮件的,一般都需要安装 SMTP 类的 wordpress 插件来解决这个问题 (也可以不安装插件直接加 SMTP 功能的代码来解决)。
Contact Form 7 这个插件使用默认的 wp_mail() 函数,wp_mail() 函数是 WordPress 用来发邮件的,类似于 PHP 的 mail() 函数。WordPress 通过这个函数功能将表单发送到你的接收邮箱里。
而一部分服务比较好的虚拟主机商系统默认做了 PHP Mail() 的配置,以保证用户的邮件功能随时能用。
但是,有不少虚拟主机提供商会禁用这个功能,目的是为了给负载很重的服务器节省一些工作负荷和资源耗用。另外,有些虚拟主机商会要求从主机发出去的邮件的发件邮箱地址,必须是 cPanel 中已添加的邮箱账户。
还有一些情况下,有些虚拟主机商为了控制发送大量垃圾邮件,会默认禁用主机的发送邮件服务的端口,比如常见的 SMTP 服务的 25 端口。
不过,SiteGround 并没有做这些限制。
我曾经写过不少 VPS 建站的文章,曾经在我的外贸课程里也讲过十多节 VPS 操作基础以及流程,从零到环境安装设置,安装好 WordPress 和 SSL 证书,以及安装好 WP 主题。但是后来我还是决定把 VPS 建站系列的课程撤下了。虽然很多人当时按照我的课程和料网的教程一步步操作完成了建站,但总会有这样那样的技术问题需要处理,以及 VPS 安全防护的问题。毕竟 VPS 是自己搭建环境,所以你必须自己对服务器的安全负责。
我自己用了 VPS 很多年,也有很多使用经验,像现在料网也仍然在使用 VPS。但使用 VPS 建站你可能碰到的各种意想不到的小问题,会远远多于你所想象的。我无法不停地写教程,解答 VPS 各种技术问题并更新教程。所以对于建站新手来说,选择合适的虚拟主机是最好的选择。
就像精装公寓一样,直接拎包住,不用去烦水电煤空调冰箱衣柜等问题,更不用太担心门锁安全的问题,有监控系统以及公寓管理员和保安负责安全。
Siteground 相对很多虚拟主机来说,访问速度快,小问题少,客服相应速度快,服务态度也好,后台界面非常友好容易上手,并且各种功能和更新十分便利(后台直接一键升级 php,一键安装 ssl 证书,一键开启 Cloudfare CDN 等等)。对比 Bluehost 来说,Bluehost 速度慢,小问题很多,客服相应慢,处理态度不够积极,另外用过了 SiteGround 的后台,估计再也不想用 Bluehost 的用户后台了。
目前我的外贸英文网站,也运行在 SiteGround 上。我对 Siteground 的喜爱最主要原因是 SiteGround 对性能的关注:SSD 存储+ HTTPS(免费使用 Let 的加密 SSL 证书)+ PHP7.x + HTTP/2 + SuperCacher(服务器级缓存)作为标准毫无疑问,你可以体验最佳的主机托管服务。
虽然还有更好的服务商如 WPEngine 或 Flywheel,但是价格太贵了。性价比来说,Siteground 是绝对赢家。
有些建站新手对 SiteGround 有误解,认为 SiteGround 建网站速度慢,其实主要是因为从国内访问国外 SiteGround 的官网确实速度比较慢,但我们英文建站其实看的是国外访问 SiteGround 机房的速度。建站之后,你可以用网速测试工具如 Pingdom 或 Gmetrix 来测试,速度比 Bluehost 建的网站快很多,并且很多以前用 Bluehost 建站的米课学员都表示 SiteGround 快很多。
两种发件方式的优劣势比较
第一种方式 PHP mail() 有个缺点,那就是由于没有验证发件人的真实性,会造成邮件的发件信息为未经验证的信息,因此发出的邮件可能会被很多收件方服务器当成垃圾邮件拦截。
所以这两种发送邮件的方式,第一种虽然设置简单发件速度迅速,但是到达率会较低一些,发件的是虚拟主机,虚拟主机的 IP 信用级可能偏低,等等很多因素可能会被收件方当成垃圾邮件。
第二种虽然发送时速度慢一点,但是有相对较高的到达率,且被当成垃圾邮件的概率要相对小一些。当然,虚拟主机上也可以再安装 smtp 插件来解决发件人真实性验证的问题。
关于主机商免费赠送使用的企业邮箱
因此,要说说企业邮箱的方面。通常虚拟主机商都会提供免费的企业邮箱,Siteground 当然也不例外。无论你买的是哪个 Hosting 套餐(多数是 Grow Big 套餐),SiteGround 都会默认给你开通企业邮箱。你在 SiteGround 后台能看到,已经默认生成了跟邮箱有关的解析记录。
但这种主机商赠送的邮箱,我认为实在鸡肋。
首先,主机商赠送的企业邮箱,千万别拿来做你外贸业务的企业邮箱,那样很不合适。因为主机商的免费企业邮箱,通常都有一个共性:发信到达率偏低、容易被当成垃圾邮件、安全性不够。所以一直建议外贸人使用专业企业邮箱,当然最好是付费的。
其次,主机商赠送的企业邮箱,收发邮件服务器的地址不容易填写正确,通常只能收个网页端版本的 webmail。
接下来,本文分几种情况下分别来说。
- 一、用 Siteground 虚拟主机,没有使用企业邮箱,如网易、腾讯、G Suite(同音 sweet),只有 Gmail 邮箱。
- 二、用 Siteground 虚拟主机,使用了企业邮箱,如网易、腾讯、或 G Suite,绑定了域名且做了邮箱记录解析。
这里我们先说第一种情况:使用 SiteGround 建站,如果你没用企业邮箱,自然是不用安装 SMTP 插件了。
因为装了 SMTP 插件你也没有信息可填。所以安装 Contact Form 7 插件后,无需再安装任何 SMTP 插件。你直接就可以简单配置插件之后,直接通过 PHP Mail() 的方式发送邮件。
应该如何正确设置 Contact Form 7 插件?
当你安装好 Contact Form 7 之后,应该会看到 WP 后台左侧出现了一个 Contact(如果后台语言是中文,那么应该多了一个联系)。点击进去,会发现已经默认有了一个表单。
如果你的后台切换过语言为中文,那么安装 Contact Form 7 的时候会自动完成翻译中文,会导致 Form 选项卡里出现表单中文字段,修改成英文即可,或者安装 Contact Form 7 之前把语言改回英文。
在 Contact Form 7 这里,有一排选项卡。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"]
这样会多出来一行文本框填写国家名。当然如果你觉得没必要,也可以删除掉那一行。或者觉得留着但是非必填,可以把那一行 text 和 Country 后面的星号去掉。
需要特别注意的是 Mail 选项卡。如果是第一种情况,你没有在用企业邮箱的话,情况十分简单。
SiteGround 已经默认做好了邮箱的各项解析,因此网站上留言表单的询盘或留言内容,都可以用 用户名@你的网站域名 的邮箱地址来发送到你的外贸邮箱里。由于你暂时没有使用企业邮箱,那么假设 Gmail 是你目前的外贸邮箱,则形如 support@yourdomain.com 的邮箱会把询盘留言内容以邮件的形式发送到你的 Gmail 邮箱里。这里使用的就是默认的 SG (SiteGround) 的企业邮箱服务。
由于你有了企业邮箱,你可以想象一下,同一个域名既绑定了虚拟主机,又使用了企业邮箱,比如腾讯企业邮箱,那邮件投递就可能出问题,SiteGround 可能会默认以为用户在使用它的邮箱,发送邮件时它就直接往本地发了,而不往外部的邮件服务器投递,这样就会导致收不到邮件。
所以如果你在用 SiteGround 虚拟主机建站,另外使用了企业邮箱(修改并做好了邮箱服务的各项解析记录),那么你需要修改 Email Routing 从默认的 Local 改为 Remote,以避免虚拟主机商弄混淆。
To — 询盘提醒邮件发送到哪个邮箱。
这里直接填写你的 Gmail 邮箱地址即可。注意填写 QQ,126 之类的邮箱可能无法收件。
注意:如果你这里填写的接收询盘的邮件地址是网易企业邮箱或者腾讯企业邮箱,那么可能会发生你的企业邮箱收不到邮件的情况。因为网易腾讯会把国外很多主机商发来的 PHP mail() 邮件当成垃圾邮件隔离掉,包括 SiteGround。在你的收件的企业邮箱的后台,自助查询 的【收件查询】里面,可以看到被隔离的收件记录,你可以看到你的 SiteGround 主机发送到你的收件企业邮箱的邮件被隔离了(隔离状态时,发件人为你的主机 Cpanel_username@你的 SG_host_name,虚拟主机名一般为 usxxx.siteground.us。实际上,邮件是由 Cpanel_username@你的 SG_host_name 的邮件地址代发的。即使你把这个代发的发件地址加入白名单也解决不了,毕竟网易腾讯企业邮箱反垃圾邮件机制太容易触发了)。
举个例子,比如说,你的企业邮箱解析记录已经正确解析到网易企业邮箱了,正常来说,从 contact@yourdomain.com 发信,这封信你应该登陆连接上你的网易企业邮箱后台或者客户端设置好用户名密码连接上以后发送。这起码做了身份验证。但是 Contact Form 7 插件属于前一种方式,直接我们从虚拟主机上就发了出去。这其实造成了看起来像是从企业邮箱地址发出的,但其实是虚拟主机代发的。
所以这里在插件填写 Mail 项下的收件人邮箱地址时,既然你并没有在使用企业邮箱,那么就用 Gmail 邮箱来收。
填写你的一个 Gmail/G Suite 邮箱。这里填写 Gmail 或 G Suite 邮箱一定可以收到的。
gmail 邮箱地址
From — 询盘提醒邮件是由谁发出的。这里默认显示的是:网站的标题+<wordpress@yourdomain.com>。邮箱中的域名必须跟你的 SiteGround 网站域名相同。
按照正常逻辑和习惯,这里应该填写留言者的邮箱即 [your-email],但是这里不能这么填写。因为主机会验证发信人(为了打击垃圾邮件和棋欺骗性邮件),这个邮箱地址必须是从跟网站同域名的邮箱发过来的。插件默认用的是 wordpress@yourdomain.com,这个不好,改成 contact@yourdomain.com。因为 wordpress 这个邮件用户名太普遍使用了,wordpress@yourdomain.com 也是 WordPress 系统默认通知邮件的地址 ,包括评论通知和新用户通知。所以改成 contact 更合适一些。
记得前面我们说过,有些虚拟主机商会要求从主机发出去的邮件的发件邮箱地址,必须是 cPanel 中已添加的邮箱账户。这一点我不太确认 SiteGround 是否也是如此,但是我的做法是保险期间,我在 SiteGround 后台 Cpanel 里【Mail】模块下的第一个 Mail Accounts 里面添加一个 contact@ 的邮箱账户。
搞定!
另外,这里我的习惯是显示客户姓名。所以最终是这样:
[your-name] <contact@yourdomain.com>
Subject —邮件标题 可以用默认的 [your-subject],这样当你收到询盘通知邮件时,邮件标题会直接显示留言者写的留言主题。
当然,也可以写成固定的格式,如:
You've just received an inqury from [your-name]!
Additional Headers — 受到留言或询盘提醒邮件时,直接点回复,就会回复到留言者到邮箱 [your-email]。这里默认,不用动。
Message Body — 邮件内容。这里可以在 [your-message] 下面一行加一行:
Sender:[your-name] <[your-email]> Email address: [your-email] Country: [your-country] Subject:[your-subject] Message: [your-message] Traced IP is [_remote_ip]
Traced IP is [_remote_ip] 是用来记录显示留言者 IP 地址。有了留言者填写的国家,你跟系统探测的留言者的 IP 地址一对照(料网导航常用工具里有查 IP 是哪个国家的工具,没有的话谷歌吧),也可以大致分析一下客户留言询盘的真实度吧。
至于默认的后面还有一行 This e-mail was sent from a contact form https://www.xyz.com/... 显示这封邮件是从哪里发出的那一行,我觉得没必要显示了,可以直接删除,显然是从网站的联系表单发来的。
最终【Mail】选项卡这里填写的内容如下:
勾选 "Use HTML content type",然后点击 Save 按钮。
这样,Contact Form 7 的配置就已经完成了。
为何收不到询盘留言邮件?要注意哪些事项?
你可能会在自己的网站 Contact 页测试留言,填写了留言表单之后,出现绿色框的成功提示:"Sender's message was sent successfully."
但是,当你去 Gmail 里去看,怎么没有收到邮件呢?你可能百思不解,于是查看 WP Mail Logging 日志,发现的确有发送记录。这是因为,你的 Gmail,可能把询盘通知邮件当成 Spam 垃圾邮件了,你可以去垃圾邮件箱里找找。
有些企业邮箱比如腾讯企业邮箱,可能不一定能在垃圾邮箱里找到,有可能没收进垃圾邮箱里就直接拦截删除了。你可以通过 腾讯企业邮-邮件自助查询,来查看是否有拦截删信记录。网易企业邮箱登陆网页版后,后台菜单里也可以选择查看自助查询。在收新记录里查找,是否邮件被隔离。(但是网易企业邮箱即使把发件的邮箱地址加入白名单也解决不了问题;腾讯企业邮箱我没尝试过添加白名单是否能解决问题。)
对于 Gmail 邮箱收件邮箱,建议把你的发信邮箱 contact@yourdomain.com 加入你收信服务的白名单里。但和国内的邮箱相比,Gmail 没有白名单这一项。你需要先在 Gmail 的设置里创建过滤器 (filter),相当于创建一个收/发件规则。
收到 contact@yourdomain.com 发来的信,不放入垃圾邮件箱。
这样即可解决问题。以后每次询盘通知邮件发来的时候,都会直接进收件箱,不会再进垃圾邮件箱了。
好了。到这里,第一种情况已经讲完了。
接着讲第二种情况:用 Siteground 虚拟主机,使用了企业邮箱,如网易、腾讯、或 G Suite,绑定了域名且做了邮箱记录解析。
无论是网易付费企业邮箱/腾讯付费企业邮箱/G Suite 付费企业邮箱),那么必须把解析记录里跟邮箱服务相关的记录解析成你企业邮箱服务商的记录。
大部分记录在 SG 后台 Cpanel - 【Domain】模块下的【Advanced DNS Zone Editor】里改,那里面的解析记录全部是 SiteGround 默认已经生成好的。通常你要改动的可能是 mail 记录(CNAME 类型),SPF (TXT 类型),DKIM (TXT 类型)。。而 MX 记录要在【Mail】模块下的 Advanced MX Editor 下找到 MX 记录进行编辑修改。
如果你用的是 G Suite 企业邮箱,那么把 SiteGround 的 MX 解析记录改成 Google 的 MX 的记录,可以参见 G Suite 的 Setup 教程,或者谷歌搜索:
site:siteground.com modify MX records google mail
使用企业邮箱的情况下,安装 Easy WP SMTP 等 SMTP 插件
设置好以后保存。然后去配置 Contact Form 7 的表单 Mail 设置选项。
OK,这样就基本搞定了。
并且用这种方式,网站上的询盘留言邮件,不再会被企业邮箱的反垃圾邮件机制拦截了。
安装 WP Mail Logging 插件来记录网站联系表单的询盘信息
无论你是暂时使用 Gmail 邮箱做着外贸,还是已经使用企业邮箱,你都可以安装 WP Mail Logging 插件来调试和记录留言发送记录。
在 WP 后台插件,安装插件,搜索 WP Mail Logging,找到这个小插件,安装激活。它会自动记录从 SiteGround 主机邮箱发出的每一封邮件。
基本上,有了这个 Log 日志查看功能,你可以很快从网站后台知道最近有没有询盘信息,而不用去 Gmail 或企业邮箱中去查看新邮件。你可以看到留言的全部信息,包括内容。
在 Message 这一列下,点击 View 按钮。即可看到 Message 内容:
注:截图上没有国家名称,因为发这些留言时,表单并没有设置填写国家的选项。
注意事项总结
首先,认真看本文。仔细看。不仔细看的话,可能看不懂。看不懂就反复看,多看几遍可能就懂了。
我熬夜花了 5 个小时才写完!写得慢,编辑得慢,太累了,天快亮了都。
其次,如果你暂时没有用网易腾讯 Gsuite 企业邮箱(没有改动 SiteGround 后台 Cpanel 里的有关邮箱服务的解析记录),只是在用 Gmail 邮箱做着外贸,那么这个情况是最简单的。那么使用 CF7 插件发询盘留言,不用安装 SMTP 插件。只需要按照本篇教程第一种方式的流程 5 分钟内即可搞定。做就 OK 了。最重要的一步是在收信的 Gmail 邮箱里添加过滤器,让虚拟主机发来的邮件不进入 Gmail 的垃圾邮件箱。
如果是使用了网易腾讯或 Gsuite 企业邮箱,首先保证企业邮箱解析已经设置好了,可以正常收发邮件。然后再去 SiteGround 后台 Cpanel 里设置 Email Rounting,Local 改成 Remote,保存。然后安装 smtp 插件,设置好再去设置 contact form 7 插件。注意 contact form 7 的接收邮箱(To:) 跟 smtp 的发送邮箱保持一致。这样即可。
最后,有什么问题弄不明白的,可以直接发工单问客服。
在 SG 后台的 support 频道,在页面最下面 REQUEST ASSISTANCE FROM OUR TEAM 下有个 Proceed to contact us here 的点击链接。写一下情况发送即可。
本站所有文章除注明“转载”的文章之外,均为原创。未经本站允许,请勿随意转载或用作任何商业用途,否则依法追究侵权者法律责任的权利。
感谢分享,谢谢站长!!@天天下载
为啥我用了方法一还是收不到呀
Hi 料神!我也有使用 WordPress 建站,主机服务使用的是 SiteGround,邮箱是网易企业邮箱。在使用 Contact Form 7 插件来接收询盘时,WP mail SMTP 已经设置完成了,接收测试邮件也正常。可是一到网站上再用询盘窗口发送邮件,就一直在转圈,无法发送成功,请问这个问题要如何解决?
安装了 WP Mail Logging,该从后台哪里查看日志呢
Hi Sam
因为 siteground 网页已经改版,没有找到改 email routing 的地方,结果表单测试发送失败。
小白,希望帮忙解决一下
F