【问题标题】:SMTP not working with php mailer classSMTP 不适用于 php 邮件程序类
【发布时间】:2012-04-09 11:58:08
【问题描述】:

我有两个帐户:

没有回复@weddinggrabs.com
no-reply@appovio.com

传入 POP3:pop.secureserver.net (995)
传出 SMTP:smtpout.secureserver.net (80, 3535, 25, 465)

这些可以使用 Thunderbird、邮箱等电子邮件客户端,但不能使用 php-mailer:

        error_reporting(0);
        require_once ("class.phpmailer.php");// PHP MAILER FOR SENDING EMAILS

        $mail = new PHPMailer();

        define('EMAIL_HOST','smtpout.secureserver.net');
        define('EMAIL_USER','no-reply@weddinggrabs.com');
        define('EMAIL_PASSWORD','xxxxxxxx');

        $mail->IsSMTP();                    
        $mail->Port     = 465;              
        $mail->Host     = EMAIL_HOST;       
        $mail->Username = EMAIL_USER;       
        $mail->Password = EMAIL_PASSWORD;   
        $mail->SMTPAuth = true;             

        $mail->FromName = "Administrator";
        $mail->From = "Administrator";
        $mail->AddAddress($email); 
        $mail->WordWrap = 50;   
        $mail->IsHTML(true);    
        $mail->Subject  = "Seating Arrangements on Event";
        $mail->Body     = "Dear WeddingWire Customer";

        if($mail->Send()) return "true";        

        return  "false";

【问题讨论】:

  • 您缺少if 的右括号)。是不是笔误?
  • 1.文件中有语法错误,2。请评论 error_reporting(0);查看代码是否能够获取 PHP 邮件程序类的正确路径
  • error_reporting(0);只是从 php-mailer 类中隐藏所有不推荐使用的方法警告。包含文件,对象被完美地创建并且没有 SMTP,php-mailer 类的 isMail() 函数发送邮件。但我必须使用 SMTP 并且必须对用户进行身份验证。
  • 您使用非标准端口 465 而不是 25 是否有原因?
  • 也有可能是网络托管服务提供商在 {{php.ini}} 中禁用了 PHP {{mail}} 功能。

标签: php email phpmailer


【解决方案1】:

你试过 $mail->SMTPSecure='ssl' 吗?一些 SMTP 服务器需要这个。

用 $mail 检查错误->ErrorInfo 有时会给出提示。

【讨论】:

  • 谢谢,$mail->SMTPSecure='ssl' 有效,但 $mail->SMTPSecure='tls' 无效,这是我的问题。
【解决方案2】:

使用此信息,您可以像这样配置 phpmailer:

$mail->SMTPAuth = true; // enable SMTP authentication
$mail->SMTPDebug = 2; // enables SMTP debug
$mail->SMTPSecure = "ssl"; // sets the prefix to the servier

我认为这会对您有所帮助。要么它会起作用,要么表明真正的问题出现在您的邮件中。 如果这不起作用,请检查一些事情

  1. 您的主机是否有权通过 SMTP 主机进行中继?
  2. 您的主机在 SMTP 之前是否需要 POP?
  3. 您的主机是否需要 SMTP 身份验证?

【讨论】:

    【解决方案3】:

    从托管此文件的服务器,调用 smtpout.secureserver.net 是否正确解析?尝试 ping 它并查看 IP 地址是否符合您的预期

    除此之外,如果您将“true”参数传递给 PHPMailer(),我会使用异常,因此请尝试以下操作:

    $mail = new PHPMailer(true);
    try
    {
        $mail->IsSMTP();                    
        $mail->Port     = 465;              
        $mail->Host     = EMAIL_HOST;       
        $mail->Username = EMAIL_USER;       
        $mail->Password = EMAIL_PASSWORD;   
        $mail->SMTPAuth = true;             
    
        $mail->FromName = "Administrator";
        $mail->From = "Administrator";
        $mail->AddAddress($email); 
        $mail->WordWrap = 50;   
        $mail->IsHTML(true);    
        $mail->Subject  = "Seating Arrangements on Event";
        $mail->Body     = "Dear WeddingWire Customer";
        $mail->Send();
    } catch( phpmailerException $e ) {
        echo $e->errorMessage();
        exit(0);
    }
    

    这至少可以让您深入了解引发的错误。

    【讨论】:

      【解决方案4】:

      您是否尝试过使用$mailer->SmtpSend(); This tutorial 似乎建议您需要。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-02
        • 1970-01-01
        • 2017-06-27
        • 2011-09-07
        • 1970-01-01
        • 2013-12-01
        相关资源
        最近更新 更多