【问题标题】:PHPMailer ProblemsPHPMailer 问题
【发布时间】:2011-06-14 10:37:20
【问题描述】:

好的,我已经下载了PHP Mailer's 类,需要它使用require_once 然后创建一个发送邮件的函数:

public function sendMail($to, $subject, $body) { 
            $mail = new phpmailer;

            $mail->IsSMTP(); // set mailer to use SMTP
            $mail->SMTPAuth = true;
            $mail->Username = 'USERNAME';
            $mail->Password = 'PASSWORD';
            $mail->Port = 465;
            $mail->SMTPSecure = 'SSL';
            $mail->From = "EMAIL";
            $mail->FromName = "FROM NAME";
            $mail->Host = "smtp.gmail.com;";  // specify main and backup server

            if(is_array($to)) {
                foreach($to as $x) {
                    $mail->AddAddress($x);
                }
            } else {
                $mail->AddAddress($to);
            }

            $mail->AddReplyTo("REPLY EMAIL", "REPLY NAME");
            $mail->WordWrap = 50;    // set word wrap

            $mail->IsHTML(true);    // set email format to HTML
            $mail->Subject = $subject;
            $mail->Body = $body;

            if(!$mail->Send()){
                return false;
            }
        }

当我去做的时候(在 $core 类中)

if($core->sendMail('MYEMAIL@gmail.com', 'Something', 'Some body')) {
        echo 'Mail sent';
    } else {
        echo 'Fail';
    }

返回失败。脚本中的代码包含正确的信息,我只是在这里使用了占位符。

【问题讨论】:

  • 不是说像Fatal error: Class 'phpmailer' not found on line #吗?
  • @Shakti 不,只是说'失败',就像 if 语句告诉它的那样
  • @Joshwaa: sendMail 如果邮件未发送(如您编码的那样)返回 false 以及如果邮件发送成功返回什么?
  • @Shakti 我已将函数更改为 return $mail->Send();,因此它应该返回 true 或 false,具体取决于邮件是否已发送,但我仍然收到“失败”。
  • @Shakti 它都包含在一个全局文件中。 @Nick $mail->ErrorInfo 不返回任何内容:s

标签: php email phpmailer


【解决方案1】:

$mail 包含错误信息,请执行以下操作:

if (!$mail->Send()) {
    throw new Exception($mail->ErrorInfo);
}

而不仅仅是返回“false”。

【讨论】:

  • 那么请var_dump($mail->ErrorInfo);。确切的输出是什么?
  • 然后尝试设置$mail->SMTPDebug = true。如果这没有帮助,您需要真正调试 phpmailer 代码,或使用 Wireshark 查看您的 SMTP 会话给出的错误。
  • 我已经完成了,它返回了SMTP -> FROM SERVER: SMTP -> FROM SERVER: SMTP -> ERROR: HELO not accepted from server: SMTP -> NOTICE: EOF caught while checking if connected
  • 远程服务器不接受您的 SMTP 连接,即它需要先进行特殊身份验证或 SSL 设置。请联系您的 SMTP 服务器提供商以获取说明。
  • 我在 localhost 上使用 xampp.. 我认为它不支持 SMPT?
【解决方案2】:
        if(!$mail->Send()){
            return false;
        }

应该是

        if(!$mail->Send()){
            return false;
        } else {
            return true;
        }

因为函数默认返回false,当函数内部没有指定返回值时。

您也可以使用更清洁的版本:

        return $mail->Send();

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-31
  • 2016-07-17
  • 2013-01-04
相关资源
最近更新 更多