Скрипт отправки писем. Нужно исправить адрес отправителя.

KC
На сайте с 09.08.2012
Offline
82
1148

Привет.

Проблема в том, что при отправке писем через форму на сайте письма приходят от "имя-пользователя-услуг-хостинга@s16.имя-хостера.name". А хотелось бы указать свой.

Использую вот такой скрипт:


$adminemail="admin@site.site"; // e-mail админа
$date=date("d.m.y"); // число.месяц.год
$time=date("H:i"); // часы:минуты:секунды
$backurl="https://site.site"; // На какую страничку переходит после отправки письма

//---------------------------------------------------------------------- //

// Принимаем данные с формы

$name=$_POST['name'];
$email=$_POST['email'];
$msg=$_POST['message'];

// Проверяем валидность e-mail

if (!preg_match("|^([a-z0-9_\.\-]{1,20})@([a-z0-9\.\-]{1,20})\.([a-z]{2,4})|is",
strtolower($email)))

{

echo
"<center>Вернитесь <a
href='javascript:history.back(1)'><B>назад</B></a>. Вы
указали неверные данные!";

}

else

{


$msg="
<p>Имя: $name</p>
<p>E-mail: $email</p>
<p>Сообщение: $msg</p>
";

// Отправляем письмо админу

mail("$adminemail", "$date $time Сообщение
от $name", "$msg");

Что нужно исправить, чтобы письма приходили например от support@site.site? Спасибо

infant
На сайте с 15.03.2008
Offline
170
#1

Вот хорошие примеры http://www.php.su/mail()

KC
На сайте с 09.08.2012
Offline
82
#2
infant:
Вот хорошие примеры http://www.php.su/mail()

Спасибо. Для меня это немного темный лес :-)

вот что сделала, заменила вот это:


mail("$adminemail", "$date $time Сообщение
от $name", "$msg");

на вот это:


mail("$adminemail", "$date $time", $msg,
"From: support@site.site\r\n"
."Reply-To: support@site.site\r\n"
."X-Mailer: PHP/" . phpversion());

Не знаю правильно ли так делать или я сделала так, что нормальный программист упадет под стол, но вроде письма пришли от support@site.site

volkovysk
На сайте с 06.05.2011
Offline
74
#3

1. Схема отправки писем через функцию mail() ненадёжна (нужно использовать SMTP-авторизацию), такие письма могут приёмным почтовым сервисом и в папку спам закинутся и вообще игнорироваться, поэтому хостер мог специально своё что-то подставлять.

2. Указание ОТ должно быть такое, с какого домена идёт рассылка. Если отправка писем идёт с сайта vasya.ru , то оправителя надо указывать любое_имя@vasya.ru . У Вас походу вобще не указано, поэтому отправителем подставлялся ящик от хостера.

3. Бывает, что без дополнительных заголовков функция не фурычит как надо. Если у Вас письма отправляются в текстовом режиме, попробуйте сделать так:

mail("$adminemail", "$date $time Сообщение от $name", "$msg", "From: support <support@site.site>\r\nContent-type: text/plain; charset=кодировка_сайта");

---------- Добавлено 12.09.2017 в 15:35 ----------

KatrinCa:


mail("$adminemail", "$date $time", $msg,
"From: support@site.site\r\n"
."Reply-To: support@site.site\r\n"
."X-Mailer: PHP/" . phpversion());

X-Mailer разве что только для понтов указывать. Не нужен он Вам. Content-type важнее.

KC
На сайте с 09.08.2012
Offline
82
#4
volkovysk:
попробуйте сделать так:
mail("$adminemail", "$date $time Сообщение от $name", "$msg", "From: support <support@site.site>\r\nContent-type: text/plain; charset=кодировка_сайта");

Спасибо именно так сделала выше, помогло.

нужно использовать SMTP-авторизацию

А есть готовый скрипт для такого или где можно почитать?

volkovysk
На сайте с 06.05.2011
Offline
74
#5

KatrinCa, да такие скрипты есть. Обычно они называются PHPMailer, но сложновато будет с ними новичку разобраться. Я использую скрипт такой http://github.com/PHPMailer/

SeVlad
На сайте с 03.11.2008
Offline
1609
#6
KatrinCa:
Проблема в том, что при отправке писем через форму на сайте письма приходят от "имя-пользователя-услуг-хостинга@s16.имя-хостера.name".

Как правило достаточно правильно настроить на хостинге свой домен. Стоит обратиться к хостеру.

Но вне зависимости от этого в скрипте нужно явно указывать FROM (он должен быть в домене сайте) и REPLY-TO (адрес для ответа).

volkovysk:
Схема отправки писем через функцию mail() ненадёжна (нужно использовать SMTP-авторизацию), такие письма могут приёмным почтовым сервисом и в папку спам закинутся и вообще игнорироваться,

В этом отношении разницы нет что использовать для отправки - mail() или SMTP. У любого МТА должны быть прописаны правильные SPF/DKIM/DMARC.

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий