У меня проблема с отправкой писем с помощью phpmailer.
Код, отправляющий электронные письма:
$mail_User = "site@xxxxxxx.com"; $mail_Password = "My Password"; $mail_address = "site@xxxxxxx.com"; $mail_Name = "MyName"; $mail_Server = "222.222.222.222"; $mail_Port = 25; function SendHTMLMail($to, $cc, $bcc, $subject, $body) { global $mail_User, $mail_Password, $mail_address, $mail_Name, $mail_Server, $mail_Port; $correo = new PHPMailer; $correo->SMTPDebug = 3; // Enable verbose debug output $correo->SetLanguage("es", "/phpmailer/language/"); $correo->IsSMTP(); $correo->IsHTML(true); $correo->Host = $mail_Server; $correo->Port = $mail_Port; $correo->SMTPAuth =true; //$correo->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted $correo->Username = $mail_User; $correo->Password = $mail_Password; $correo->From = $mail_address; $correo->FromName = $mail_Name; $correo->Subject = $subject; $correo->Body = $body; $dest = explode (";", $to); for ($n=0; isset($dest[$n]); $n++) $correo->AddAddress($dest[$n]); $dest = explode (";", $cc); for ($n=0; isset($dest[$n]); $n++) $correo->AddCC($dest[$n]); $dest = explode (";", $bcc); for ($n=0; isset($dest[$n]); $n++) $correo->AddBCC($dest[$n]); if ($correo->Send()) return ""; else { AddLog("Correo no enviado: $correo->ErrorInfo"); echo "<br>Correo no enviado: $correo->ErrorInfo<br>"; return "Correo no enviado: $correo->ErrorInfo"; } }
И результат:
2016-02-24 04:58:17 Connection: opening to 222.222.222.222:25, timeout=300, options=array ( ) 2016-02-24 04:58:17 Connection: opened 2016-02-24 04:58:17 SERVER -> CLIENT: 220-srv1.abcdef.com ESMTP Exim 4.86 #2 Wed, 24 Feb 2016 14:47:17 +0100 220-We do not authorize the use of this system to transport unsolicited, 220 and/or bulk e-mail. 2016-02-24 04:58:17 CLIENT -> SERVER: EHLO www.site.com 2016-02-24 04:58:18 SERVER -> CLIENT: 250-srv1.abcdef.com Hello www.doznyk.com [181.181.181.181] 250-SIZE 52428800 250-8BITMIME 250-PIPELINING 250-AUTH PLAIN LOGIN 250-STARTTLS 250 HELP 2016-02-24 04:58:18 CLIENT -> SERVER: STARTTLS 2016-02-24 04:58:18 SERVER -> CLIENT: 220 TLS go ahead 2016-02-24 04:58:18 SMTP Error: Could not connect to SMTP host. 2016-02-24 04:58:18 CLIENT -> SERVER: QUIT 2016-02-24 04:58:19 SERVER -> CLIENT: 221 srv1.abcdef.com closing connection 2016-02-24 04:58:19 Connection: closed 2016-02-24 04:58:19 SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
Почему phpmailer не отправляет электронные письма? Почему он пытается использовать TLS, если строка кода является комментарием?
Я заменяю конфиденциальные данные поддельными, такими как имя сервера и IP-адреса. Если я изменю порт с 25 до 587 и раскомментирую строку tls, результат будет почти таким же.
спасибо
Новый тест, тот же результат.
Я читал документ, как Синхро предложил мне. Я изменил порт с 25 до 587 и добавил строку $ correo-> SMTPAutoTLS = true;
$correo->SMTPAuth =true; $correo->SMTPAutoTLS = true; //$correo->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted $correo->Username = $mail_User; $correo->Password = $mail_Password;
Результат:
2016-02-24 06:05:36 Connection: opening to 222.222.222.222:587, timeout=300, options=array ( ) 2016-02-24 06:05:37 Connection: opened 2016-02-24 06:05:37 SERVER -> CLIENT: 220-srv1.abcdef.com ESMTP Exim 4.86 #2 Wed, 24 Feb 2016 15:54:37 +0100 220-We do not authorize the use of this system to transport unsolicited, 220 and/or bulk e-mail. 2016-02-24 06:05:37 CLIENT -> SERVER: EHLO www.myserver.com 2016-02-24 06:05:38 SERVER -> CLIENT: 250-srv1.abcdef.com Hello www.doznyk.com [181.229.171.247] 250-SIZE 52428800 250-8BITMIME 250-PIPELINING 250-AUTH PLAIN LOGIN 250-STARTTLS 250 HELP 2016-02-24 06:05:38 CLIENT -> SERVER: STARTTLS 2016-02-24 06:05:38 SERVER -> CLIENT: 220 TLS go ahead 2016-02-24 06:05:39 SMTP Error: Could not connect to SMTP host. 2016-02-24 06:05:39 CLIENT -> SERVER: QUIT 2016-02-24 06:05:39 SERVER -> CLIENT: 221 srv1.abcdef.com closing connection 2016-02-24 06:05:39 Connection: closed
Что ж. Я сделал много тестов и не вижу секции документа, которая сказала мне Синхро, но Синхро был прав.
Я добавил следующий код и теперь отлично работает!
$correo->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ) );
Хотя я не использую SSL, я должен уточнить, что я не использую SSL, потому что phpmailer проверяет, что SSL можно использовать. Или нужно правильно настроить
Благодаря!