【问题标题】:SMTP Error: Could not connect to SMTP hostSMTP 错误:无法连接到 SMTP 主机
【发布时间】:2011-06-01 23:59:32
【问题描述】:

我有这段代码,在我的本地服务器上一切正常。电子邮件发送没有任何问题。

但是现在我将内容传递给网络服务器,我得到了这个错误......

SMTP Error: Could not connect to SMTP host.

在服务器中启用了 SSL..正确吗?那么,问题是什么?

            $mail = new PHPMailer();
            $mail->IsSMTP();
            $mail->SMTPAuth   = true;                  // enable SMTP authentication
            $mail->SMTPSecure = "ssl";                 // sets the prefix to the servier
            $mail->Host       = "smtp.gmail.com";      // sets GMAIL as the SMTP server
            $mail->Port       = 465;                   // set the SMTP port
            $mail->Username   = "dnteiro"; // GMAIL username
            $mail->Password   = "xxx";      // GMAIL password

【问题讨论】:

  • 您的防火墙允许外部连接到端口 465?
  • 运行这个 php 代码的服务器。
  • 当然是伟大的中国防火墙。

标签: php smtp phpmailer


【解决方案1】:

听起来您的虚拟主机正在阻止与 smtp.gmail.com:465 的出站连接。建议:

  1. 验证:如果您可以通过 shell/终端访问您的 Web 托管服务器,请尝试 telnet 测试以验证他们是否确实阻止了此操作。运行telnet smtp.gmail.com 465

  2. 联系方式:致电或发送电子邮件给您的托管服务提供商,了解他们为出站中继提供的 SMTP 服务器。确保他们知道您想使用您的 @gmail.com 地址作为发件人/回复地址。

  3. 更新代码:一旦您的主机为您提供了不同的邮件服务器,请更新您的代码并重试。

如果您的网络主机根本不允许从其服务器进行出站中继,那么您需要考虑切换主机,如果这是您的应用程序的要求。

【讨论】:

  • 我面临同样的问题,而 telnet 实际上为我工作。所以我的主机不会阻止我通过端口 465 访问 smtp.gmail.com。有什么建议吗?
【解决方案2】:

关于#2,AJ 是正确的,具体如下: http://support.google.com/mail/bin/answer.py?hl=en&answer=78775

【讨论】:

    【解决方案3】:
    require 'phpmailer/PHPMailerAutoload.php';
    $mail = new PHPMailer;
    $mail->isSMTP();
    $mail->Host = 'mail.abc.co.in';
    $mail->Port = 587;
    $mail->SMTPAuth = true;
    $mail->SMTPSecure = 'tls';
    $mail->SMTPOptions = array(
        'ssl' => array(
        'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => true
        )
    ); 
    
    $mail->Username = 'user name';
    $mail->Password = 'password';
    
    $mail->setFrom("from email id", "name");
    $mail->addAddress("receipiant email id");
    
    $mail->isHTML(true);
    $bodycontent = 'body';
    $mail->Body    = $bodycontent;
    
    if (!$mail->send()) {
        echo "message has been not send", $mail->ErrorInfo;
        }
    else{
        echo "message has been send";
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多