Проблемы PHPMailer - PullRequest
       9

Проблемы PHPMailer

1 голос
/ 14 июня 2011

Хорошо, поэтому я скачал класс PHP Mailer , потребовал, чтобы он использовал 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';
    }

Возвращает неудачу. Код в скрипте содержит правильную информацию, я просто использовал заполнители для публикации здесь.

Ответы [ 2 ]

2 голосов
/ 14 июня 2011

$mail содержит сообщение об ошибке, сделайте следующее:

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

вместо того, чтобы просто возвращать "false".

2 голосов
/ 14 июня 2011
        if(!$mail->Send()){
            return false;
        }

должно быть

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

потому что функции по умолчанию возвращают false, когда возвращаемое значение не указано внутри функции.

Вы также можете использовать более чистую версию:

        return $mail->Send();
...