phpmailer не отправляет почту в gmail, yahoo, hotmail или блокирует электронную почту, отправленную phpmailer

Я использую PHPmailer для отправки писем

вот код, который я использовал:

$mail = new PHPMailer(); $subject = "test"; $to = "test_patel@yahoo.com" $mail->SetFrom("PDSociety@aol.com","Punjab Dental Society"); $mail->AddReplyTo("PDSociety@aol.com", "Punjab Dental Society"); $mail->Subject = $subject; $mail->MsgHTML($str); $mail->AddAddress($to, "Punjab Dental Society"); if(!$mail->Send()) { $err = "Mailer Error: " . $mail->ErrorInfo; //echo $err; } else { $msg = "Message sent!"; } // Clear all addresses and attachments for next loop $mail->ClearAddresses(); 

если я изменю адрес электронной почты от yahoo до gmail или hotmail, все равно электронная почта не будет отправлена.

я проверял ошибку эха, но никаких ошибок.

может ли кто-нибудь объяснить, в чем проблема?

Попробуй это :

 $mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch $mail->IsSMTP(); // telling the class to use SMTP try { $mail->AddAddress($to['email'],$to['name']); $mail->FromName = ''; $mail->Subject = $subject; $mail->MsgHTML($message); $send = true; return $mail->Send(); } catch (phpmailerException $e) { echo $e->errorMessage(); //Pretty error messages from PHPMailer } catch (Exception $e) { $e->getMessage(); //Boring error messages from anything else! } 

Это поможет вам в случае ошибки исключения.

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

Нет простого способа обеспечить, чтобы сообщения попадали в папку «Входящие», а не спам, – если бы это было, спамеры использовали бы его, а фильтрация была бы бесполезной. Убедитесь, что ваш DNS решает назад и вперед, что у вас есть действительные записи SPF, которые вы подписываете своими сообщениями с DKIM (особенно важно для Yahoo), и, самое главное, вы не отправляете сообщения, которые ваши адресаты считают спамом.

Проработав несколько способов, я нашел следующий код, работающий почти со всеми провайдерами электронной почты

 $to['email'] = "recipients email address"; $to['name'] = "name"; $subject = "email subject"; $str = "<p>Hello, World</p>"; $mail = new PHPMailer; $mail->IsSMTP(); $mail->SMTPAuth = true; $mail->Host = 'Specify main and backup server here'; $mail->Port = 465; $mail->Username = 'xyz@domainname.com'; $mail->Password = 'email account password'; $mail->SMTPSecure = 'ssl'; $mail->From = 'From Email Address'; $mail->FromName = "Any Name"; $mail->AddReplyTo('xyz@domainname.com', 'any name'); $mail->AddAddress($to['email'],$to['name']); $mail->Priority = 1; $mail->AddCustomHeader("X-MSMail-Priority: High"); $mail->WordWrap = 50; $mail->IsHTML(true); $mail->Subject = $subject; $mail->Body = $str; if(!$mail->Send()) { $err = 'Message could not be sent.'; $err .= 'Mailer Error: ' . $mail->ErrorInfo; } $mail->ClearAddresses(); 

переменные значения должны быть соответствующим образом изменены. Надеюсь, это поможет людям, имеющим проблемы с PHPmailer

Вы смотрите на сообщение здесь: Использование результатов PHPMailer во многих заблокированных электронных письмах ? Ответчик решил проблему, изменив тему электронной почты:

Хорошо, я решил проблему; код выше не был проблемой и отлично работает.

В моем предмете я использовал фразу «проверить информацию об учетной записи» и заблокировал ее у нескольких интернет-провайдеров.

Итак, урок, ваш вопрос. Я смотрел на свой PHP-код и содержимое моего тела, прежде чем понял это.

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