2010-01-06 3 views
27

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

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

<?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."; 
?> 

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

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

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

Является ли это чем-то, что я делаю неправильно или веб-хост играет фол?

+0

У меня также была эта проблема и выложил для вас полезный ответ! –

ответ

52

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

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

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

mail($to,$subject,$message,$headers,"-f [email protected]"); 
+1

Я на самом деле не использую «From: [email protected]». Я использую какой-то другой адрес, но, думаю, ваш вопрос в том, что сервер не позволит мне отправлять почту как просто случайный человек. но это так неправильно! – jrharshath

+15

Извините, но это так, так правильно! Проверьте папку со спамом на наличие доказательств. :) –

+0

Хмм, я понимаю, что ты прав. – jrharshath

4

Во избежание фишинга некоторые почтовые серверы не позволяют переписывать From.

+0

Многие интернет-провайдеры делают это сейчас – Erik

+4

Правда, но должно быть возможно использовать домен как имя отправителя, зарегистрированного на этом сервере. Принудительное переписывание * ничего * на основное имя хоста сервера смешно. –

0

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

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

C.

19

Оказывается сервера автора первоначального (Bluehost) имеет a FAQ concerning this very question.

Статья 206.


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

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

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

От: [email protected]
From: «пользователь "< user @ domain.ком>

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

От: "[email protected]"
От: пользователь @ domain.com
От: [email protected] < [email protected]>

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

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

Примечание: Адрес электронной почты, который вы используете, должен быть действительной сгенерированной учетной записью в cpanel .

+1

У вас есть ссылка на статью, которую вы можете добавить в свой ответ? – 2011-06-08 16:12:48

+0

https: //my.bluehost.com/cgi/help/206 –

1

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

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

1

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

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

Я была такая же проблема, я проверил сайт 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(); 

\ г \ п должно быть в двойные кавычки (") сам, то одиночные кавычки (') не будет работать.

+0

Это отлично поработало для меня, спасибо! – puk789

+0

лучший и рабочий ответ +1 –

+1

«The \ r \ n должен быть в двойных кавычках («) сам, одинарные кавычки (') не будут работать. »- Спасибо! Это как моя проблема! –

0

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

$header = 'From: ShopFive <[email protected]>' . "\r\n"; 
Смежные вопросы