Я пытаюсь создать контактную форму и использую PHPMailer. Я попробовал это на localhost с xampp, и он отлично работает. Но когда я загружаю на свой хост, я получаю сообщение об ошибке SMTP connect () не удалось.
Вот мой код:
$m = new PHPMailer;
$m->isSMTP();
$m->SMTPAuth = true;
$m->Host = "smtp.gmail.com";
$m->Username = "[email protected]";
$m->Password = "mypass";
$m->SMTPSecure = "ssl";
$m->Port = "465";
$m->isHTML();
$m->Subject = "Hello world";
$m->Body = "Some content";
$m->FromName = "Contact";
$m->addAddress('[email protected]', 'Test');
Я попытался изменить порт на 587 и SMTPsecure на tls (и все комбинации). Но не работает. Любой совет, чтобы решить это?
Спасибо
Вам может потребоваться указать адрес, с которого будет отправлено сообщение, например:
$mail->From = '[email protected]';
Я бы также дал isHTML параметр, истинный или ложный:
$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 = '[email protected]';
$mail->FromName = $name;
$mail->addAddress($to, 'Recipients Name');/*Add a recipient*/
$mail->addReplyTo($email, $name);
/*$mail->addCC('[email protected]');*/
/*$mail->addBCC('[email protected]');*/
$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
)
);