PHP Отправка письма с чужого E-mail

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>";
(Просмотрено 4 665 раз, 1 раз за сегодня)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *