Отправить письмо без указания хедера From

305
08 марта 2017, 20:47

При использовании php функции mail() не обязательно указывать хедер From, он и так автоматом подставляется, а вот если отправлять через phpmailer, то без указания $email - > From письмо не отправляется. Не указывать хедер From очень удобно, потому что при переносе с локального сервера на удаленный ничего не нужно менять. Как можно в phpmailer отправлять письмо без хедера From, чтобы он сам подставлялся? Код отправки письма:

$email = new PHPMailer();
$email->CharSet = 'UTF-8';
$email->From = 'example@mail.ru';
if (!empty($name)) {
    $email->FromName = $name;
} else {
    $email->FromName = 'Client';
}
$email->Subject = 'Новая заявка';
$email->Body = $msg;
$email->IsHTML(true);
$email->AddAddress('example@mail.ru');
if ($_FILES['file_attach']) {
    $email->AddAttachment($_FILES['file_attach']['tmp_name'], $_FILES['file_attach']['name']);
}
if (!empty($_POST[$required_field])) {
//     отправка сообщения
    if ($email->Send()) {
        $result = 1;
        echo json_encode($result);
    } else {
        $result = 0;
        echo json_encode($result);
    }
} else {
    $result = 0;
    echo json_encode($result);
}

Буду благодарен за любую помощь

Answer 1

В целях безопасности емейл-домен во from должен совпадать с доменом отправителя. И у многих хостеров есть эта проверка. Иначе письмо не отправиться.

Поэтому правильнее будет не "не указывать", а подставлять домен, с которого отправляется. Как-то так:

$email->From = 'noreply@'.$_SERVER['HTTP_HOST'];
$email->Reply-to= 'mymail@gmailcom`;

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

см доп. https://ru.wordpress.org/support/topic/%d1%83%d1%8f%d0%b7%d0%b2%d0%b8%d0%bc%d0%be%d1%81%d1%82%d1%8c-php-mailer/page/2/

READ ALSO
Безопасность AJAX?

Безопасность AJAX?

Можно мне разъяснить про безопасность AJAX запросовЕсли у меня работает такой код:

443
CodeIgniter не срабатывает post

CodeIgniter не срабатывает post

мы получаем данные по товару и через POST отправляемВот код контроллера:

293
Как вытащить число из строки? php

Как вытащить число из строки? php

{"10":"OK"} как из этой строки получить число 10?

369
php для начинающего [дубликат]

php для начинающего [дубликат]

На данный вопрос уже ответили:

220