2016-02-08 2 views
1

У меня есть PHP скрипт, который использует PHPMailer:Почему PHPMailer или SendMail не работают?

require("PHPMailer/PHPMailerAutoload.php"); 
$mail = new PHPMailer(); 
$mail->IsSMTP(); 
$mail->SMTPAuth = false; 
$mail->IsSendmail(); 
$mail->Host = "localhost"; 
$mail->Port = 587; 

$mail->SetFrom($from, 'BuzzZap'); 

$mail->Subject = $subject; 
$mail->MsgHTML($body); 
$mail->AddAddress($to, $to); 
if ($mail->Send()) { 
    echo "Message sent!"; 
    return true; 
} else { 
    echo "Mailer Error: " . $mail->ErrorInfo; 
    return false; 
} 

(Некоторые переменные определены в другом месте, но, безусловно, определены) Итак, у меня есть Sendmail работает на порту 25 и 587 (говорит, когда я бегу netstat -tulnp) на живой сервер. Сценарий действительно говорит «успешно отправлено», и не производит ошибки, предупреждения и т.д. mail.log шоу:

8 17:33:23 casparwylie sendmail[2601]: u18HXNFd002601: Authentication-Warning: casparwylie: www-data set sender to [email protected] using -f 
Feb 8 17:33:23 casparwylie sendmail[2601]: u18HXNFd002601: [email protected], size=2178, class=0, nrcpts=1, msgid=<[email protected]>, [email protected]$ 
Feb 8 17:33:23 casparwylie sm-mta[2602]: u18HXNK9002602: from=<[email protected]>, size=2393, class=0, nrcpts=1, msgid=<[email protected]>, proto=ESMTP, dae$ 
Feb 8 17:33:23 casparwylie sendmail[2601]: u18HXNFd002601: to="[email protected]" <[email protected]>, [email protected] (33/33), delay=00:00:00, xdelay=00:0$ 
Feb 8 17:33:23 casparwylie sm-mta[2604]: STARTTLS=client, relay=gmail-smtp-in.l.google.com., version=TLSv1/SSLv3, verify=FAIL, cipher=ECDHE-RSA-AES128-GCM-SHA256, bits=128/128 
Feb 8 17:33:24 casparwylie sm-mta[2604]: u18HXNK9002602: to=<[email protected]>, delay=00:00:01, xdelay=00:00:01, mailer=esmtp, pri=122393, relay=gmail-smtp-in.l.google.com. [7$ 
Feb 8 17:33:26 casparwylie sendmail[2606]: u18HXQoo002606: Authentication-Warning: casparwylie: www-data set sender to [email protected] using -f 
Feb 8 17:33:26 casparwylie sendmail[2606]: u18HXQoo002606: [email protected], size=2178, class=0, nrcpts=1, msgid=<[email protected]>, [email protected]$ 
Feb 8 17:33:26 casparwylie sm-mta[2607]: u18HXQXe002607: from=<[email protected]>, size=2393, class=0, nrcpts=1, msgid=<[email protected]>, proto=ESMTP, dae$ 
Feb 8 17:33:26 casparwylie sendmail[2606]: u18HXQoo002606: to="[email protected]" <[email protected]>, [email protected] (33/33), delay=00:00:00, xdelay=00:0$ 
Feb 8 17:33:26 casparwylie sm-mta[2609]: STARTTLS=client, relay=gmail-smtp-in.l.google.com., version=TLSv1/SSLv3, verify=FAIL, cipher=ECDHE-RSA-AES128-GCM-SHA256, bits=128/128 
Feb 8 17:33:26 casparwylie sm-mta[2609]: u18HXQXe002607: to=<[email protected]>, delay=00:00:00, xdelay=00:00:00, mailer=esmtp, pri=122393, relay=gmail-smtp-in.l.google.com. [7$ 

для каждого письма я пытаюсь отправить.

Однако я просто не получаю электронное письмо при проверке [email protected]

Поблагодарили бы за любую помощь - я, очевидно, неправильно понимаю что-то!

+0

Вы уже пытались положить $ mail-> Send(); перед предложением if? – Rhopercy

+0

'verify = FAIL' выглядит не очень хорошо. – Synchro

+0

@Rhopercy, попробуем сейчас. Синхро, согласился. Не знаю, в чем именно дело. –

ответ

0

Пока вы отправляете электронные письма через SMTP, расположенные на локальном хосте. Вы не должны указывать SMTP соответствующие настройки. Поэтому постарайтесь, чтобы удалить эти строки:

$mail->IsSMTP(); 
$mail->SMTPAuth = false; 
$mail->IsSendmail(); 
$mail->Host = "localhost"; 
$mail->Port = 587; 

Примечание: Не забудьте проверить папку SPAM

+0

На самом деле это не ответ. Рекомендуется использовать SMTP для localhost, не в последнюю очередь потому, что он обеспечивает лучшую отслеживаемость, отладочную производительность и производительность. – Synchro

+0

@Synchro, PHPMailer по умолчанию использует 'SMTP' на localhost, поэтому нет необходимости указывать какие-либо дополнительные настройки. – ZeJur

+0

Нет; Он использует 'mail()' по умолчанию, который использует любые бинарные файлы sendmail, которые вы настроили в php.ini, и не имеет никакого отношения к поддержке SMTP-сервера PHPMailer. – Synchro