Ошибка PHPMailer, SMTP connect () с Gmail

Я пытаюсь создать контактную форму, и я использую PHPMailer. Я пробовал это на localhost с xampp, и он отлично работает. Но когда я загружаю на свой хост, я получаю сообщение об ошибке SMTP connect ().

Вот мой код:

$m = new PHPMailer; $m->isSMTP(); $m->SMTPAuth = true; $m->Host = "smtp.gmail.com"; $m->Username = "mymail@gmail.com"; $m->Password = "mypass"; $m->SMTPSecure = "ssl"; $m->Port = "465"; $m->isHTML(); $m->Subject = "Hello world"; $m->Body = "Some content"; $m->FromName = "Contact"; $m->addAddress('mymail@gmail.com', 'Test'); 

Я попытался изменить порт на 587 и SMTPsecure на tls (и все комбинации). Но не работает. Любые советы для решения этой проблемы?

благодаря

Вам может потребоваться указать адрес, с которого будет отправлено сообщение, например:

 $mail->From = 'user@domain.com'; 

Я бы также дал isHTML параметр, либо true, либо false:

 $m->isHTML(true); 

Другой вариант – это все же отказаться от спецификации порта. Есть несколько других параметров, которые могут оказаться полезными. Следующий пример – это код, который я тестировал, и можете ли его адаптировать для использования:

 $mail = new PHPMailer; $mail->isSMTP();/*Set mailer to use SMTP*/ $mail->Host = 'mail.domain.com';/*Specify main and backup SMTP servers*/ $mail->Port = 587; $mail->SMTPAuth = true;/*Enable SMTP authentication*/ $mail->Username = $username;/*SMTP username*/ $mail->Password = $password;/*SMTP password*/ /*$mail->SMTPSecure = 'tls';*//*Enable encryption, 'ssl' also accepted*/ $mail->From = 'user@domain.com'; $mail->FromName = $name; $mail->addAddress($to, 'Recipients Name');/*Add a recipient*/ $mail->addReplyTo($email, $name); /*$mail->addCC('cc@example.com');*/ /*$mail->addBCC('bcc@example.com');*/ $mail->WordWrap = 70;/*DEFAULT = Set word wrap to 50 characters*/ $mail->addAttachment('../tmp/' . $varfile, $varfile);/*Add attachments*/ /*$mail->addAttachment('/tmp/image.jpg', 'new.jpg');*/ /*$mail->addAttachment('/tmp/image.jpg', 'new.jpg');*/ $mail->isHTML(false);/*Set email format to HTML (default = true)*/ $mail->Subject = $subject; $mail->Body = $message; $mail->AltBody = $message; if(!$mail->send()) { echo 'Message could not be sent.'; echo 'Mailer Error: ' . $mail->ErrorInfo; } else { header("Location: ../docs/confirmSubmit.html"); } 

Надеюсь это поможет!

Этот ответ работает на меня: https://stackoverflow.com/a/47205296/2171764

Я использую:

 $mail->Host = 'tls://smtp.gmail.com:587'; $mail->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ) );