использование класса phpmailer - PullRequest
2 голосов
/ 11 июня 2011

я использую класс phpmailer для отправки писем.im geeting ошибка "Не удалось выполнить: / smtp", следующий код, приведенный ниже.может кто-нибудь подсказать мне в чем проблема.

require '../class.phpmailer.php'; 

try {
    $mail = new PHPMailer(true); //New instance, with exceptions enabled

    $body             = file_get_contents('contents.html');
    echo $body;
    $body             = preg_replace('/\\\\/','', $body); //Strip backslashes

    $mail->IsSMTP();                           // tell the class to use SMTP
    $mail->SMTPAuth   = true;                  // enable SMTP authentication
    $mail->Port       = 25;                    // set the SMTP server port
    $mail->Host       = "ssl://smtp.gmail.com"; // SMTP server
    $mail->Username   = "test@gmail.com";     // SMTP server username
    $mail->Password   = "1234567889";            // SMTP server password

    $mail->IsSendmail();  // tell the class to use Sendmail

    $mail->AddReplyTo("rto@gmail.com","First Last");

    $mail->From       = "from@gmail.com";
    $mail->FromName   = "First Last";

    $to = "toemail@gmail.com";

    $mail->AddAddress($to);

    $mail->Subject  = "First PHPMailer Message";

    $mail->AltBody    = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
    $mail->WordWrap   = 80; // set word wrap

    $mail->MsgHTML($body);

    $mail->IsHTML(true); // send as HTML

    $mail->Send();
    echo 'Message has been sent.';
} catch (phpmailerException $e) {
    echo $e->errorMessage();
}

1 Ответ

4 голосов
/ 11 июня 2011

При использовании GMail ваши настройки могут быть неверными; попробуйте это (исправленный порт и адрес SSL):

$mail->Port       =  465;                   // set the SMTP server port
$mail->Host       = "ssl://smtp.gmail.com"; // SMTP server
$mail->Username   = "test@gmail.com";       // SMTP server username
$mail->Password   = "1234567889";   

В качестве альтернативы используйте TLS:

$mail->Port       =  587;                   // set the SMTP server port
$mail->Host       = "tls://smtp.gmail.com"; // SMTP server

Редактировать : удалите эту строку ниже (Сначала вы предоставляете настройки для использования SMTP, затем вы указываете его использовать и отправляете через sendmail, и вы вводите неверный путь в конфигурации. Просто придерживайтесь одной службы, SMTP с вышеуказанными настройками (или edit2 ниже) и см.):

Удалить:

$mail->IsSendmail();  // tell the class to use Sendmail

Edit2: другой вариант (если первый ответ не работает):

$mail->SMTPSecure = 'ssl'; 
$mail->Host = 'smtp.gmail.com';
...