2016-02-01 5 views
1

Я пытаюсь использовать PHPMailer для отправки писем из контактной формы. После отправки сервер не отвечает более 5 минут, затем приводит к ERROR 405 Not Allowed - ngnix.Получение ошибки 405 (не разрешено) на PHPMailer

Я использую SMTP Auth из [email protected], а SMTP-сервер находится по адресу voyager.websitewelcome.com. Я подумал: «Может быть, из-за перекрестного подчинения, хотя это не AJAX и все PHP?»

Неа см ответить ниже:

mail = new PHPMailer; 

$mail->isSMTP(); 
$mail->Host = 'voyager.websitewelcome.com'; 
$mail->SMTPAuth = true; 
$mail->Username = '[email protected]'; 
$mail->Password = 'mypassword'; 
$mail->SMTPSecure = 'tls'; //<---- THIS is the problem 
$mail->Port = 465; 

$mail->setFrom('[email protected]', 'My Company Kiosk'); 
$mail->addAddress('[email protected]', 'My Name'); 

$mail->isHTML(true); 

$mail->Subject = 'New Lead from My Company'; 
$mail->Body = '<b>test</b> html'; //$body; 
$mail->AltBody = 'test text'; 


try { 
    $mail->send(); 
    //echo $output; 
} 
catch (phpmailerException $e) { 
    echo $e->errorMessage(); 
} catch (Exception $e) { 
    $e->getMessage(); 
} 

ответ

0

В середине написания этого вопроса, "TLS" поймал мой взгляд. Я никогда не думал изменить это, и мой SMTP-сервер не разрешает TLS!

Я прочитал столько сообщений, пытаясь понять это. Я думал, что кто-то должен опубликовать возможный ответ!

$mail->SMTPSecure = 'ssl'; 
2

Это не означает, что сервер не разрешает TLS, это то, что вы пытаетесь использовать явный SSL (SMTP+STARTTLS == 'tls' в PHPMailer) на порт, ожидая неявный SSL (SMTPS). Вы также могли бы зафиксировать его (таким образом, чтобы он не устарел с 1998 года), установив $mail->Port = 587;, что и предлагает the documentation (см. Раздел «Использование шифрования»).

Кстати ваша ошибка захвата не будет работать, потому что PHPMailer не бросает исключений по умолчанию, вам необходимо пройти true конструктору, чтобы они, как это:

$mail = new PHPMailer(true); 
+0

Спасибо за обновленный ответ! Это гораздо более информативно, чем мое случайное открытие. Мое предложение установки SMTP-сервера утверждает, что оно принимает как TLS, так и SSL на этом порту, поэтому я не думал попробовать порт 587. Я дам вам попробовать, поскольку TLS более безопасен, и это связано с личной информацией клиентов. Если это не сработает, я дам им вызов и посмотрю, знает ли парень о конфигурации порта. И спасибо за обновление об улавливании ошибок, я полностью пропустил это. – Dexter