PHPmailer SMTP ошибка с OVH, настройки верны и работают в почтовом приложении - PullRequest
0 голосов
/ 27 июня 2018

Я пытаюсь заставить phpmailer обрабатывать запросы контактов на моем сайте, но, что бы я ни пытался, я получаю ошибки. Ниже приведен код, который я использую. SMTP-сервер, логин и пароль отлично работают в Thunderbird.

<html>
<body>

<center>
<br><br><br><br><br><br><br><br>
<p style="font-family:verdana">
Thank you, <?php echo $_POST["fname"]; ?> <?php echo $_POST["lname"]; ?>, for your message!<br>
We will contact you shortly on : <?php echo $_POST["email"]; ?>
</p>
<a href="../../index.html">
<img src="../../assets/images/logo-medium.jpg">
</a>

<?php 

//require_once('PHPMailerAutoload.php');
require "vendor/autoload.php";

$errors = '';
$myemail = '****@****.com';
$mypassword = '*******';

if(empty($_POST['fname'])  ||
   empty($_POST['lname']) ||
   empty($_POST['email']) ||
   empty($_POST['subject']) ||
   empty($_POST['message']))
{
    $errors .= "\n Erreur: All fields are required!";
}
$name = $_POST['fname'] . ' ' . $_POST['lname'];
$email_address = $_POST['email'];
$message = 'From : ' . $name . '\n Concerning : ' . $_POST['subject'] . '\n\n' . $_POST['message']  ;
$subject = 'Request from site : ' . $_POST['subject'];

$mail = new PHPMailer();
$mail-> isSMTP();
$mail-> SMTPAuth = true;
$mail-> AuthType = 'LOGIN';
$mail-> SMTPSecure = 'ssl';
$mail-> SMTPHost = 'ssl0.ovh.net';
$mail->Host = 'ssl://ssl0.ovh.net:465';
$mail-> SMTPDebug = 3;
$mail-> Port ='465';
$mail-> isHTML();
$mail-> UserName=$myemail;
$mail-> Password=$mypassword;   
$mail-> SetFrom = $myemail;
$mail-> Subject = $subject;
//$mail-> AddAddress($myemail);
$mail-> AddAddress('*****@****.com');
$mail -> Body = $message;

if( empty($errors))
{
    $mail -> Send();
}
//else
//print $errors;

?>

</center>

</body>
</html>

В Thunderbird в качестве настроек SMTP используется порт 465. Безопасность SSL / TLS для подключения и способ аутентификации - обычный пароль.

Вывод Debug при отправке формы:

2018-06-27 07:59:17 Connection: opening to ssl://ssl0.ovh.net:465, timeout=300, options=array ( ) 
2018-06-27 07:59:17 Connection: opened 
2018-06-27 07:59:17 SERVER -> CLIENT: 220 ssl0.ovh.net player732 
2018-06-27 07:59:17 CLIENT -> SERVER: EHLO www.*****.com 
2018-06-27 07:59:17 SERVER -> CLIENT: 250-player732.ha.ovh.net 250-SIZE 104857600 250-AUTH PLAIN LOGIN 250-AUTH=PLAIN LOGIN 250-ENHANCEDSTATUSCODES 250 8BITMIME 
2018-06-27 07:59:17 CLIENT -> SERVER: AUTH LOGIN
2018-06-27 07:59:17 SERVER -> CLIENT: 334 VXNlcm5hbWU6 
2018-06-27 07:59:17 CLIENT -> SERVER: 
2018-06-27 07:59:19 SERVER -> CLIENT: 535 5.7.8 Error: authentication failed: VXNlcm5hbWU6 
2018-06-27 07:59:19 SMTP ERROR: Username command failed: 535 5.7.8 Error: authentication failed: VXNlcm5hbWU6 
2018-06-27 07:59:19 SMTP Error: Could not authenticate. 
2018-06-27 07:59:19 CLIENT -> SERVER: QUIT 
2018-06-27 07:59:19 SERVER -> CLIENT: 221 2.0.0 Bye 
2018-06-27 07:59:19 Connection: closed 
2018-06-27 07:59:19 SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

Я пытался включить и отключить различные параметры для AUthtype, SMTPAuth и т. Д., Но не получил более качественных результатов.

Есть ли что-то еще, чтобы изменить или альтернатива phpmailer, которая могла бы работать лучше?

1 Ответ

0 голосов
/ 27 июня 2018

Простая опечатка:

$mail-> UserName=$myemail;

Должно быть:

$mail->Username=$myemail;

Дешевой раздачей является пустая команда после AUTH LOGIN, которая сообщает, что свойство Username должно быть пустым.

Это всегда помогает основывать ваш код на примерах, предоставленных PHPMailer - вы использовали что-то очень старое, и вы также используете старую версию PHPMailer, которая никогда не помогает.

...