WHMCS 拒绝特定后缀的邮箱
在使用 WHMCS 期间,使用的是 Mailgun 邮件服务来发送信件。每个月都有 10000 的信件额度免费使用,挺适合于小型的网站使用的。
测试的时候发现,QQ邮箱怎么发送也不能收到邮件,而其他的邮箱就能正常收到,或许在垃圾箱中。
但 QQ 邮箱很贱,他连垃圾箱的机会都不给,直接在接受前就给你拒绝了。Mailgun 后台显示一堆类似的信息。
Server response: 550 Connection denied. http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=20022&&no=1000727
因为使用的是免费套餐,所以发送的 IP 都是共享的,QQ 邮箱针对每个 IP 的频率都很严,所以就导致了接收率有 5% 已经不错了。
所以就有了这篇文章…
由于使用的是授权版本,加密的,没法从代码层去解决问题。但是 WHMCS 的文档太不友好了,还不如自己分析去。
最后还是找到了一个 ShoppingCartValidateCheckout
.
在用户提交订单后,会自动执行这个 Hooks,然后判断当前钩子是否有内容执行,没有则跳过继续执行下面的代码。
执行时会带入 $_REQUEST ,所以你可以在这个函数内处理任何提交后的内容,所以判断邮箱这就是个小 case 了。
你可以在 /includes/hooks/
这个文件夹内新建一个 php 文件,然后贴入下面的内容即可。
function checkClientRegisterEmail($vars) {
$domian = explode("@", $vars['email']);
$domain = $domian[1];
if(in_array($domain, array('qq.com', 'vip.qq.com', 'foxmail.com'))) {
return "请勿使用 QQ 邮箱注册,否则无法收到我们的邮件。";
}
}
add_hook("ShoppingCartValidateCheckout", 0, "checkClientRegisterEmail");
如果你是自己写插件的话,也可以在插件目录下新建 hooks.php
文件,然后贴入内容即可。
实现的效果图如下
【声明】本文 WHMCS 拒绝特定后缀的邮箱 为柠之漠然原创文章,转载请注明出自
枫之落叶
并保留本文有效链接:https://blog.shiniv.com/2015/08/whmcs-reject-email-with-hooks/ , 转载请保留本声明!