网站使用了cdn之后,腾讯企业邮箱无法通过phpmailer发送邮件。

Grocker
  • 2.2k
<?php
header("content-type:text/html;charset=utf-8");
require_once './email.class.php';
$name = "iojdsfajijd";
$mobile = "13344448888";

if (!empty($name) && !empty($mobile)){
    $smtpserver = "smtp.exmail.qq.com";
    $smtpserverport = 25;
    $smtpusermail = "om@xxx.com";
    $smtpmailtos = array("xxx@qq.com");
    $smtpuser = "om@xxx.com";
    $smtppass = "mypassword";
    $mailsubject = "来源网页:".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
    $mailbody = '';
    $br="\r\n";
    $mailbody .= "姓名:".$name.$br;
    $mailbody .= "电话:".$mobile.$br;
    $mailtype = "text";
    $smtp = new smtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass);
    $smtp->debug = true;
    foreach ($smtpmailtos as $smtpmailto){
        $sendState=$smtp->sendmail($smtpmailto, $smtpusermail, $mailsubject,$mailbody,$mailtype);
    }
    // if ( $sendState==1 ){
    $list = array('name'=>$name,'tel'=>$mobile);
    $json = json_encode($list);
    echo $json;
    //}
}

CDN用百度云和加速乐都出现了这种问题。我目前是用的百度云
我的邮件发送代码如上,在没用cdn的服务器上是可以正常发送邮件的,用了cdn之后,邮件发送出现如下报错:

Cannot connenct to relay host smtp.exmail.qq.com
Connection timed out (110)
Cannot send email to xxx@qq.com

解决过的办法:
iptables 出端口全部绿灯
php版本:5.6 检查了php.ini 和 allow_url_fopen = On,disable_function 没用 fsock和fsockopen函数,请问是怎么回事呢?求解答,谢谢

回复
阅读 7.4k
4 个回答

CDN屏蔽了25端口 直接采用465 ssl方式发 现在都建议使用ssl方式

禁了25端口
PHP 读取 time out
只需要在SMTP服务器地址前加ssl://
列子
smtp服务器:ssl://smtp.mxhichina.com
端口:465

//email setting
ssl://smtp.mxhichina.com

//PHP 端
set_time_limit(3600);

这个和代码没有太多的关系,你首要先需要描述清楚的你的服务器架构,CDN 是如何配置的,请求 stmp 服务器的服务器是怎么样的。

另外,做邮件通知,不要用腾讯的企业邮箱啊,一天最多200封。应该用专业稳定的第三方邮件服务,比如阿里云邮件推送,sendcloud等。

发邮件跟CDN没关系,尤其是你用的第三方邮件服务器

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏