2016-09-13 12 views
0

Я посмотрел вокруг, почему мой PHP-скрипт не отправлял никаких писем, когда у меня был набор $mail->isSMTP();.Ошибка отправки электронной почты с использованием PHPMailer по SMTP

Прежде чем перейти к проблеме, я хотел бы указать, что я использую mailgun.org в качестве своего SMTP-сервера. Мой PHP-скрипт прост, у меня есть HTML-форма, которая пересылает данные в PHP-файл, который, в свою очередь, вызывает скрипт PHPMailer и отправляет электронное письмо.

Вот код на мой PHP скрипт:

date_default_timezone_set('Asia/Manila'); 

require 'phpmailer/PHPMailerAutoload.php'; 
// include 'phpmailer/class.phpmailer.php'; 
// require 'phpmailer/class.smtp.php'; 

$mail = new PHPMailer; 
//$mail->isSMTP(); 
$mail->SMTPDebug = 0; 
$mail->Debugoutput = 'html'; 
$mail->Host = "smtp.mailgun.org"; 
$mail->Port = 465; 
$mail->SMTPAuth = true; 
$mail->SMTPSecure = "ssl"; 
$mail->Username = ""; //Username removed 
$mail->Password = ""; //Password removed 
$mail->setFrom('', ''); //Email address and Name removed 
$mail->addReplyTo($userMail, $firstName); 
$mail->addAddress('[email protected]', 'Name'); //Actual Values Changed 
$mail->addAddress('[email protected]', 'Name'); //Actual Values Changed 
$mail->addAddress('[email protected]', 'Name'); //Actual Values Changed 
$mail->Subject = 'New Application for website by '. $firstName; 
$mail->msgHTML($theMessage); 
$mail->AltBody = $theMessage; 
if (!$mail->send()) { 
    echo "Mailer Error: " . $mail->ErrorInfo; 
} else { //Some HTML code here 
} 

Итак, как вы можете видеть, я закомментировал $mail->isSMTP(); линию. Это связано с тем, что всякий раз, когда я пытаюсь его использовать, код не загружается, и после долгого ожидания появляется ошибка 500. (К сожалению, с помощью установки cPanel не позволяет просматривать журналы Apache).

Я попытался импортировать только файл class.phpmailer.php, но это дало мне фатальную ошибку, что класс SMTP не был определен, что ожидалось. Затем я включил файл class.smtp.php, который дал мне ту же самую ошибку 500.

Я осмотрел StackOverflow и наткнулся на this answer, однако это не помогло моему делу.

Я просмотрел журналы Mailgun, но у них нет записи сценария, даже пытающегося подключиться.

Additional Information: If it matters, I have the following files in the same directory: 
- sendMail.php //The script above 
- class.phpmailer.php 
- class.smtp.php 
- PHPMailerAutoload.php 
- index.html //Not important in this situation. 

Я надеюсь, что кто-то сможет мне помочь, я полагаюсь теперь на метод non-smtp. :/

+0

Как говорит, что другой вопрос, делать проверки, которые приведены в [руководстве по поиску и устранению неисправностей] (https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting). Скорее всего, ваш интернет-провайдер блокирует исходящий SMTP - вы используете GoDaddy? – Synchro

+0

@Synchro У меня был такой же результат как на локальном хосте, так и на производстве. Однако я проверю с ISP, я запускаю установку Wordpress на том же хосте, и smtp отлично работает на нем, похоже, что-то с моим кодом. –

+0

Вы уверены? По умолчанию Wordpress будет использовать PHPMailer в режиме isMail(). Кстати, ваша ошибка 500 звучит как простой график, поскольку он не может подключиться. – Synchro

ответ

0

Попробуйте это хорошо работать ..!

date_default_timezone_set('Asia/Manila'); 

require 'phpmailer/PHPMailerAutoload.php'; 
// include 'phpmailer/class.phpmailer.php'; 
// require 'phpmailer/class.smtp.php'; 

$mail = new PHPMailer(); 
$mail->IsSMTP(); 
$mail->SMTPDebug = 1; 
$mail->SMTPAuth = true; 
$mail->SMTPSecure = 'ssl'; 
$mail->Host = "smtp.gmail.com"; 
$mail->Port = 465; 
$mail->Username = ""; //Username removed 
$mail->Password = ""; //Password removed 
$mail->addReplyTo($userMail, $firstName); 
$mail->SetFrom('[email protected]', 'my name'); 
$mail->Subject = 'New Application for website by '. $firstName;$mail->MsgHTML($theMessage); 
$mail->AddAddress('[email protected]', 'my name'); 
if($mail->Send()) { 
    echo "Message sent!"; 
}else { 
    echo "Mailer Error: " . $mail->ErrorInfo; 
} 
Смежные вопросы