PHPMailer无法连接服务器

时间:2016-09-28 13:06:45

标签: php email tcp phpmailer

PHPmailer在我的localhost上运行得很好,但是当我把它移到生产中时,我遇到了这样的错误:

  

连接:打开到smtp.gmail.com:587,timeout = 300,options = array   ()2016-09-28 12:58:01连接:无法连接到服务器。错误   编号2.“错误通知:stream_socket_client():无法连接到   smtp.gmail.com:587(连接超时)2016-09-28 12:58:01 SMTP   错误:无法连接到服务器:连接超时(110)   2016-09-28 12:58:01 SMTP connect()失败。

我尝试了TLS和SSL,相应地更新了端口。 此外,我运行了快速nmap扫描,它显示端口已正确打开,因此这不是问题

PORT    STATE    SERVICE
25/tcp  filtered smtp
443/tcp open     https
465/tcp open     smtps
587/tcp open     submission

这是我应用的摘录:

public function __construct() {
    parent::__construct();

    $this->isSMTP();
    $this->SMTPAuth = true;
    $this->SMTPSecure = 'tls';
    $this->Host = MAIL_HOST;
    $this->Username = MAIL_USERNAME;
    $this->Password = MAIL_PASSWORD;
    $this->From = 'myemail';
    $this->FromName = 'Name';
    $this->addEmbeddedImage('../public/img/message_logo.png', 'logo');
    $this->isHTML(true);
    $this->Port = 587;
    $this->Subject = "SUBJECT";
    $this->SMTPDebug = MAIL_SMTP_DEBUG;
}

任何人都知道接下来要检查什么?

2 个答案:

答案 0 :(得分:1)

这是一个非常常见的问题,通常是由ISP的出站SMTP阻止造成的,例如: GoDaddy做到了这一点。 nmap扫描的内容是什么? Gmail吗?

通过错误消息内容,我还猜测您正在使用旧版本的PHPMailer。

the PHPMailer troubleshooting guide中介绍了诊断此类问题。

答案 1 :(得分:0)

不了解GMail,但使用Office 365我需要禁用SSL检查。

public class Assessments
{
    public Assessments()
    {
         Results = new List<AssessmentResult>();
    }
    public List<AssessmentResult> Results { get; set; }
}

编辑:您可能希望在禁用SSL对等验证之前确保信任主机。