Phpmailer使用smtp与Gmail无法正常工作 - 连接超时

red*_*009 4 php email ssl gmail phpmailer

我查看了以下链接:

phpmailer发送gmail smtp超时

通过PHP邮件程序使用Gmail SMTP服务器发送电子邮件

http://uly.me/phpmailer-and-gmail-smtp/

...并试图为自己实现这些的组合......但大多数时候它发送此消息......

无法发送消息.

邮件程序错误:SMTP连接()失败.

然而有一次,当我在"tls"和"ssl"之间进行实验时,它发送了这个...

SMTP错误:无法连接到服务器:连接超时(110)SMTP连接()失败.无法发送消息.

邮件程序错误:SMTP连接()失败.

我的代码附上了...我不知道错过了什么?我问网络托管服务是否阻止并给他们一个我的代码模板 - 他们说服务器允许连接到Gmail的SMTP.

    require_once("class.phpmailer.php");
    $mail = new PHPMailer();
    $mail -> IsSMTP();
    $mail -> SMTPDebug = 2;
    $mail -> SMTPAuth = 'true';
    $mail -> SMTPSecure = 'tls';
    $mail -> SMTPKeepAlive = true;
    $mail -> Host = 'smtp.gmail.com';
    $mail -> Port = 587;
    $mail -> IsHTML(true); 

    $mail -> Username = "myemail@gmail.com";
    $mail -> Password = "mypassword";
    $mail -> SingleTo = true; 

    $to = xxx;                           
    $from = xxx;
    $fromname = xxx;
    $subject = xxx;
    $message = xxx
    $headers = "From: $from\n";
    $headers .= "MIME-Version: 1.0\n";
    $headers .= "Content-type: text/html; charset=iso-8859-1\n";

    $mail -> From = $from;
    $mail -> FromName = $fromname;
    $mail -> AddAddress($to);

    $mail -> Subject = $subject;
    $mail -> Body    = $message;

    if(!$mail -> Send()){
        echo "Message could not be sent. <p>";
        echo "Mailer Error: " . $mail-> ErrorInfo;
        exit;
    }
Run Code Online (Sandbox Code Playgroud)

Cas*_*sey 8

我挖了进去.使用PHP本机的fsocketopen来测试连接并消除大多数潜在问题.用这个写一个简单的php页面:

    $host = "smtp.gmail.com";
    $port = "587";
    $checkconn = fsockopen($host, $port, $errno, $errstr, 5);
    if(!$checkconn){
        echo "($errno) $errstr";
    } else {
        echo 'ok';
    }
Run Code Online (Sandbox Code Playgroud)

你应该回来"确定".如果不是,您知道您的连接问题与Phpmailer无关.如果是这样的话,它可能就是托管公司.如果没有,那么你的本地主机和托管公司之间的区别就像不同版本的php一样简单.

我怀疑这个脚本不会建立连接