it-roy-ru.com

проблема с php mail 'From' header

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

Мой код (суть этого):

<?php
$to = "[email protected]";
$subject = "Test mail";
$message = "Hello! \nThis is a simple email message.";

$headers = "From: [email protected]";
$headers .= "\r\nReply-To: [email protected]";
$headers .= "\r\nX-Mailer: PHP/".phpversion();

mail($to,$subject,$message,$headers);

echo "Mail Sent.";
?> 

проблема заключается в том, что при доставке почты заголовок from остается [email protected], а значение response-to изменяется на указанное значение.

box123.bluehost.com - это имя хоста сервера, на котором размещен веб-сайт.

Так что я делаю не так? Что я могу сделать, чтобы адрес «От» совпадал с адресом ответа?

Я что-то не так делаю, или веб-хост играет нечестно?

28
jrharshath

Правка: я только что отметил, что вы пытаетесь использовать адрес Gmail в качестве значения от. Это не сработает , и интернет-провайдер правильно перезаписывает его. Если вы хотите перенаправить ответы на исходящие сообщения, используйте reply-to.

Обходной путь для действительных адресов, который работает со многими провайдерами:

попробуйте добавить пятый параметр в вашу команду mail()

mail($to,$subject,$message,$headers,"-f [email protected]");
54
Pekka 웃

Оказывается, у исходного сервера постера (blueHost) есть FAQ относительно этого самого вопроса .

Статья 206.


Это связано с тем, что наши серверы требуют, чтобы вы (или ваш скрипт) использовали правильно отформатированное, действительное поле From: в заголовке электронного письма. Если поле От: не отформатировано правильно, пусто или адрес электронной почты не существует в cPanel, адрес От: будет изменен на [email protected]###.bluehost.com.

Вы должны изменить скрипт, который вы используете, чтобы правильно использовать действительный From: header.

Примеры заголовков, которые должны работать:

От: [email protected]
От: «пользователь» <[email protected]>

Примеры заголовков, которые НЕ будут работать:

От: "[email protected]"
От: user @ domain.com
От: [email protected] <[email protected]

Наши серверы не принимают имя для адреса электронной почты и адрес электронной почты, чтобы быть одинаковыми. Он не примет двойную декларацию адреса электронной почты.

Для сценариев, таких как Joomla и Wordpress, вам необходимо следовать их документации для правильного форматирования полей from. Для Wordpress потребуется плагин Mail From.

Примечание. Используемый вами адрес электронной почты должен быть действительным аккаунтом, созданным в Cpanel.

20
John Connolly

У меня была такая же проблема, я проверил сайт php.net. И нашел правильный формат.
Это мой обновленный код. 

$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From:  ' . $fromName . ' <' . $fromEmail .'>' . " \r\n" .
            'Reply-To: '.  $fromEmail . "\r\n" .
            'X-Mailer: PHP/' . phpversion();

\r\n должен быть в двойных кавычках ("), одинарные кавычки (') не будут работать. 

13
Eugine Joseph

Для предотвращения фишинга некоторые почтовые серверы не позволяют перезаписывать From.

4
Luís Guilherme

Я решил эту проблему, добавив учетные записи электронной почты в Cpanel, а также добавив эту же электронную почту в заголовок из поля, как это 

$header = 'From: XXXXXXXX <[email protected]>' . "\r\n";
1
Anahit DEV

Я понимаю, что это старая ветка, но у меня была та же проблема, так как я вчера переехал в bluehost. Возможно, это не был выбранный ответ, но я поддерживаю ответ bluehost article 206. 

Я создал действительный адрес электронной почты в панели управления и использовал его как мой адрес От, и это сработало.

1
Rvenca

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

Если вы действительно хотите отправлять почту с @ gmail.com, почему бы просто не воспользоваться службой SMTP gmail? Если вы не можете перенастроить сервер, на котором работает PHP, то существует множество инструментов-оболочек для электронной почты, которые позволяют вам указывать настраиваемые SMTP-ретрансляторы phpmailer.

C.

0
symcbean

заголовки не работали для меня на моем общем хостинге, причина была в том, что я использовал свой адрес электронной почты hotmail в заголовке. Я создал письмо на своей cpanel и установил это же письмо в заголовке, да, это сработало!

 $header = 'From: ShopFive <[email protected]>' . "\r\n";
0
zeeshan