Вы не сказали, что вы подразумеваете под "не работает".Выдает ошибки, не отправляет вообще, или как?Было бы полезно увидеть протокол SMTP (установите SMTPDebug = 2
).
Проблемы в стороне, это плохая идея:
$mail->setFrom($_POST['email'], $_POST['name'], false);
Это подделка, и ваши сообщения будутотклонено или отфильтровано по спаму, потому что это нарушит выравнивание DMARC.Установка $mail->Sender = 'example@mydomain.com';
немного поможет, так как ваш отправитель конверта будет в порядке, но, вообще говоря, не делайте этого, так как это не поможет с доставкой.
Единственное отличие, которое setFrom()
имеет по сравнению с настройкой *Свойство 1011 * напрямую заключается в том, что оно немедленно проверяет адрес, и вы можете увидеть результат - попробуйте это:
if (!$mail->setFrom($_POST['email'], $_POST['name'], false)) {
die('bad address');
}
Если вы дадите ему неверный адрес, то отправка не удастся, хотя она все еще может быть предпринята попыткаесли вы установили свойство напрямую - это может объяснить разницу, которую вы видите.
Я бы посоветовал вам настроить его таким образом, чтобы он не поддавал ни адрес отправителя, ни отправителя конверта, но все жеотправляя ответы на форму представления отправителю:
setFrom('example@mydomain.com');
if (!$mail->addReplyTo($_POST['email'], $_POST['name'])) {
die('bad address');
}