За последние 24 часа нас посетили 59455 программистов и 1740 роботов. Сейчас ищут 792 программиста ...

Отправка письма на почтовый ящик

Тема в разделе "Прочие вопросы по PHP", создана пользователем EndoCrinolog, 4 фев 2012.

  1. EndoCrinolog

    EndoCrinolog Активный пользователь

    С нами с:
    4 фев 2012
    Сообщения:
    205
    Симпатии:
    1
    Адрес:
    Тольятти
    Кому интересно - этот скрипт позволяет осуществлять отправку писем на почтовые ящики, использую SMTP-соединение.

    Код (Text):
    1.  
    2. <?php
    3. $subject = "Здесь прописываете тему письма"
    4. $TOname = "Здесь прописываете имя того, кому отправлено письмо";
    5. $TOemail = "Здесь прописываете e-mail, кому будет отправляется письмо";
    6. $FROMname = "Здесь прописываете, от чьего имени отправлено письмо (Путин В.В., например)";
    7. $FROMemail = "Здесь прописываете, от чьего e-mail отправлено письмо (putnvv@mail.ru, например)";
    8. $text = "Здесь прописываете текст сообщения";
    9. $smtp_root = "Здесь прописываете адрес сервера (yandex.ru, например, без www и прочего)";
    10. $smtp_server = "Здесь прописываете адрес SMTP-сервера (smtp.yandex.ru, например, без www и прочего)";
    11. $smtp_login = "Здесь прописываете логин SMTP-сервера. Используется, как платформа для отправки вашего письма. Если вы зарегистрированы на Яндекс.Почте, то введите логин от него";
    12. $smtp_password = "Здесь прописываете пароль SMTP-сервера. Используется, как платформа для отправки вашего письма. Если вы зарегистрированы на Яндекс.Почте, то введите пароль введенного выше логина";
    13.  
    14. function get_data($smtp_conn){
    15. $data="";
    16. while($str = fgets($smtp_conn,515)){
    17. $data .= $str;
    18. if(substr($str,3,1) == " "){
    19. break;
    20. }
    21. }
    22. return $data;
    23. }
    24.  
    25. $header="Date: ".date("D, j M Y G:i:s")." +0300\r\n";
    26. $header.="From: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode($FROMname)))."?= <".$FROMemail.">\r\n";
    27. $header.="X-Mailer: The Bat! (v3.99.3) Professional\r\n";
    28. $header.="Reply-To: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode($FROMname)))."?= <".$FROMemail.">\r\n";
    29. $header.="X-Priority: 3 (Normal)\r\n";
    30. $header.="Message-ID: <172562218.".date("YmjHis")."@".$smtp_root.">\r\n";
    31. $header.="To: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode($TOname)))."?= <".$TOemail.">\r\n";
    32. $header.="Subject: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode($subject)))."?=\r\n";
    33. $header.="MIME-Version: 1.0\r\n";
    34. $header.="Content-Type: text/plain; charset=windows-1251\r\n";
    35. $header.="Content-Transfer-Encoding: 8bit\r\n";
    36.  
    37.  
    38.  
    39. $smtp_conn = fsockopen($smtp_server, 25,$errno, $errstr, 10);
    40. if(!$smtp_conn) {print "Соединение с сервером не прошло"; fclose($smtp_conn); exit;}
    41.  
    42. $data = get_data($smtp_conn);
    43. fputs($smtp_conn,"EHLO ".$smtp_root."\r\n");
    44. $code = substr(get_data($smtp_conn),0,3);
    45. if($code != 250) {print "Ошибка приветсвия EHLO"; fclose($smtp_conn); exit;}
    46.  
    47. fputs($smtp_conn,"AUTH LOGIN\r\n");
    48. $code = substr(get_data($smtp_conn),0,3);
    49. if($code != 334) {print "Сервер не разрешил начать авторизацию"; fclose($smtp_conn); exit;}
    50.  
    51.  
    52. // ЛОГИН
    53. fputs($smtp_conn,base64_encode($smtp_login)."\r\n");
    54. $code = substr(get_data($smtp_conn),0,3);
    55. if($code != 334) {print "Ошибка доступа к такому юзеру"; fclose($smtp_conn); exit;}
    56. // ПАРОЛЬ
    57. fputs($smtp_conn,base64_encode($smtp_password)."\r\n");
    58. $code = substr(get_data($smtp_conn),0,3);
    59. if($code != 235) {print "Неправильный пароль"; fclose($smtp_conn); exit;}
    60.  
    61.  
    62. fputs($smtp_conn,"MAIL FROM:".$smtp_login."@".$smtp_root."\r\n");
    63. $code = substr(get_data($smtp_conn),0,3);
    64. if($code != 250) {print "Сервер отказал в команде MAIL FROM"; fclose($smtp_conn); exit;}
    65.  
    66. fputs($smtp_conn,"RCPT TO:".$TOemail."\r\n");
    67. $code = substr(get_data($smtp_conn),0,3);
    68. if($code != 250 AND $code != 251) {print "Сервер не принял команду RCPT TO"; fclose($smtp_conn); exit;}
    69.  
    70. fputs($smtp_conn,"DATA\r\n");
    71. $code = substr(get_data($smtp_conn),0,3);
    72. if($code != 354) {print "Сервер не принял DATA"; fclose($smtp_conn); exit;}
    73.  
    74. fputs($smtp_conn,$header."\r\n".$text."\r\n.\r\n");
    75. $code = substr(get_data($smtp_conn),0,3);
    76. if($code != 250) {print "Ошибка отправки письма"; fclose($smtp_conn); exit;}
    77.  
    78. fputs($smtp_conn,"QUIT\r\n");
    79.  
    80. fclose($smtp_conn);
    81. ?>

    Если кому надо - пользуйтесь на здоровье.
    А кто будет пользоваться - плюсаните или оцените положительной оценкой ^_^

    Добавлено спустя 1 минуту 11 секунд:
    Кстати, скрипт работает как с localhost (если интернет подключен), так и на платном/бесплатном хостинге, как альтернатива mail(), которая бывает иногда недоступна
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Скрипт твой говно. в первой же строке опечатка
    весь построен на exit, а это бл я ть вне школьного мира уже недопустимо
     
  3. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    )))))))))) ааааааааааааааа )))))))))))))))
     
  4. EndoCrinolog

    EndoCrinolog Активный пользователь

    С нами с:
    4 фев 2012
    Сообщения:
    205
    Симпатии:
    1
    Адрес:
    Тольятти
    Весь бле ать исправишь сам, если он тебе понадобится.Это СТАНДАРТНОЕ решение.
     
  5. Крыс

    Крыс Активный пользователь

    С нами с:
    3 фев 2012
    Сообщения:
    449
    Симпатии:
    0
    Да, ярко выраженный пример того, как писать НЕнадо

    У вас, как и было сказано, школьные стандарты
     
  6. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Писта, кто вас этому научил?
     
  7. EndoCrinolog

    EndoCrinolog Активный пользователь

    С нами с:
    4 фев 2012
    Сообщения:
    205
    Симпатии:
    1
    Адрес:
    Тольятти
    Сам ^_^ Меня никто не учил) Приходилось всё самому рубить :)
     
  8. Mr. T

    Mr. T Активный пользователь

    С нами с:
    10 ноя 2010
    Сообщения:
    733
    Симпатии:
    0
    Адрес:
    Украина, г. Киев