PHP Отправка письма с чужого E-mail
Вообще говоря, отправить E-mail с помощью PHP-скрипта — тривиальная задача. Делается это так:
<?php //Отправляем Email и проверяем на удачу if (mail("send_to@mail.ru", "Тема_письма", "Сообщение_в_письме")){ echo "сообщение принято к доставке"; }else{ echo "что-то пошло не так"; } ?>
В результате выполнения скрипта на адрес send_to@mail.ru придет письмо с непонятного адреса Вашего почтового сервера. Чтобы изменить адрес отправителя всего-то нужно указать дополнительный параметр From вот так:
<?php //Отправляем Email и проверяем на удачу if (mail("send_to@mail.ru", "Тема_письма", "Сообщение_в_письме", "From: sender@mail.ru")){ echo "сообщение принято к доставке"; }else{ echo "что-то пошло не так"; } ?>
Теперь гораздо лучше, письмо пришло якобы с адреса sender@mail.ru (почему-то в голову закрадываются мысли как можно надуривать юзеров отправляя левые сообщения с известных адресов). Однако, когда приходит письмо от известного E-mail, то в графе отправителя, вместо E-mail адреса, пишется имя отправителя. Можно так сделать и в нашем примере:
<?php //Отправляем Email и проверяем на удачу if (mail("send_to@mail.ru", "Тема_письма", "Сообщение_в_письме", "From: Сайт Knasys.ru <noreply@blog.knasys.ru>")){ echo "сообщение принято к доставке"; }else{ echo "что-то пошло не так"; } ?>
Мдааа, вроде и хорошо — можно написать своё имя, отправить красиво, но ведь в параметре From я могу написать и нечто такое:
"From: Domain name registrar REG.RU <noreply@reg.ru>"
а в тексте письма попросить оплатить продление домена на свой электронный кошелёк!!!
Из сей басни следует мораль: Не верьте наслово тому что приходит к Вам на почту даже от известных E-mail адресов!
P.S.: функция mail позволяет также отправлять красивые письма в формате html. как это сделать — узнайте у гугла.
P.P.S.: ну ладно, вот вам простой пример с использованием html-тэгов <b>:
<?php header('Content-type: text/html; charset=utf-8'); //Создаём текст сообщения $message = "Тестовое <b>сообщение</b>"; //Говорят, что UTF-8 лучше не отправлять, т.к. не всегда русские символы отобрадаются корректно, поэтому конвертируем в windows-1251 $message = iconv('utf-8','windows-1251',$message); //Для использования html тэгов нужно установить тип контента сообщения $headers= "MIME-Version: 1.0rn"; $headers .= "Content-type: text/html; charset=windows-1251rn"; //Здесь пишем от кого отправляем $headers .= "From: Сайт Knasys.ru <noreply@blog.knasys.ru>"; //Отправляем Email и проверяем на удачу if (mail("send_to@mail.ru", "Тема_письма", $message, $headers)){ echo "сообщение принято к доставке"; }else{ echo "что-то пошло не так"; } ?>
ВНИМАНИЕ!!! ATTENTION!!! ACHTUNG!!!
Найден стрёмный косяк: При отправке письма последним способом на почту yandex.ru от имени почтового ящика на mail.ru письма принимаются к доставке, но не доставляются, однако, от maail.ru всё проходит хорошо. Чувствую у яндекса есть какое-то огранечение по подмене адресов, хотя с сайта на UCOZ подмена на mail.ru происходит нормально. Возможно почтовый сервер UCOZa находится в доверенной зоне у яндекса. Кароче хрен знает…
Поэтому чтобы получатель мог отвечать на подмененный адрес, меняю заголовки так:
//Здесь пишем от кого отправляем $headers .= "From: Сайт Knasys.ru <noreply@blog.knasys.ru>rn"; $headers .= "Reply-To: Вася_Пупкин <vasya@mail.ru>";