2017-02-12 4 views
0

Я хочу, чтобы PHPMailer настраивал контактную страницу для моего сайта. Перроблема, с которой я столкнулся, заключается в том, что для работы сценария необходимо указать адрес с на локальном сервере, например. если мой домен составляет example.com, адрес должен быть [email protected]. Когда я устанавливаю его таким образом, скрипт работает отлично. Проблема, с которой я сталкиваюсь, заключается в том, что, являясь контактной страницей, адрес должен быть адресом электронной почты отправителей, это означает, что если клиент свяжется со мной с адресом электронной почты, например [email protected], сценарий будет ошибка, аналогичная приведенной ниже:Использование PHP Mailer для отправки smtp-писем с адреса электронной почты за пределами локального сервера

SMTP ERROR: DATA END command failed: 
550-Your FROM address ([email protected] , Dev Customer 550-) 
must match your authenticated email user ([email protected]). 

Есть ли у кого-нибудь идеи о том, как обойти это? Или есть альтернативы? Я буду признателен за любую форму помощи. Заранее спасибо.

+1

Это зависит от конфигурации сервера электронной почты. Поговорите с людьми, которые управляют этим или находят другое. –

+1

Вы можете использовать заголовок 'reply-to' и установить' from' в локальный адрес электронной почты, например (в вашем примере) 'noreply @ example.com'. – Tigger

+0

@Tigger, когда я использую 'reply-to' в заголовках, он по-прежнему отвечает на адрес' from' – Biko

ответ

0

Согласно предложению Тигра, вы должны никогда отправить с использованием адреса отправителя в качестве адреса From. Это подделка и заставит ваши сообщения терпеть неудачу с проверками SPF, не создавая проблем с доставкой, либо с сообщениями, отскакивающими или отправленными в спам-папки. В любом случае, он активно защищается в течение по крайней мере десятилетия, и это также одна из тех практик, которая заставит вас быть уязвимыми для дыры в безопасности PHPMailer, зафиксированной в декабре.

Поскольку вы добавили это с PHPMailer, я покажу, как использовать это, чтобы делать то, что вы спрашиваете:

$mail->setFrom('[email protected]', 'Contact form'); 
$mail->addReplyTo($_POST['email'], $_POST['name']); 

Это именно то, что делает the example contact form script provided with PHPMailer. Также стоит проверить представленные значения. addReplyTo будет автоматически проверять адрес, поэтому вам нужно проверить возвращаемое значение.

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

Смежные вопросы