Отправка почты на PHP
Наверняка каждый начинающий веб-программист сталкивался с функцией PHP mail(), которая служит для отправки почты на e-mail пользователя. Работая на прямую с данной функцией, очень часто приходится самостоятельно подготавливать и передавать все заголовки письма, содержащие множество служебной информации. В большинстве случаев все происходит без каких либо неожиданностей, но бывают и исключения. Как правило самостоятельно составление заголовков, подготовка тела письма и последующая его отправка может сопровождаться ошибками в кодировке письма, его формате и т.д.
Пример работы функции mail():
<?php mail("support@example.com", "Тема письма", "Строка 1\n Строка 2\n Строка 3"); ?> |
Следующий пример более расширен, в него добавлена работа с заголовками письма:
<?php $to = "user1@example.com>, " ; $subject = 'Тема письма'; $to .= "user2@example.com>"; $message = ' <html> <head></head> <body> <p>Это письмо отправлено всем пользователям нашего портала!</p> </body> </html>'; $headers = "Content-type: text/html; charset=windows-1251 \r\n"; // Тип писма HTML, в кодировке windows-1251 $headers .= "From: Администрация сайта <admin@example.com>\r\n"; $headers .= "Bcc: archive@example.com\r\n"; mail($to, $subject, $message, $headers) ?> |
Такой способ отправки весьма удобен, при выполнении небольших скриптах или системах. Когда надежность и удобство использования стоит на втором и более, месте. И как я говорил ранее, в такой реализации отправки письма может быть допущена ошибка. Например если мы пошлем такое письмо, с указанными выше заголовками на почтовый ящик @yahoo.com, то всего скорее оно придет к нам в нечитабельном виде. Вместо текста мы увидим множество иероглифов. связано это в первую очередь с тем, что мы указали кодировку windows-1251, русскоязычные символы которай не корректно обрабатываются сервисом @yahoo.com
Но если мы планируем подойти к вопросу организации почтовых рассылок в нашем проекте более серьезно, то следует использовать для этих целей решение реализованное в классе PHP. Отправка почты с помощью специально подготовленного класса, может выглядеть следующим образом:
include "libmail.php"; $m= new Mail('windows-1251'); // можно сразу указать кодировку, можно ничего не указывать ($m= new Mail;) $m->From( "asd@asd.com" ); // от кого $m->To( "kuda@asd.ru" ); // кому $m->Subject( "тема сообщения" ); //$m->charset("UTF-8"); // кодировка письма $m->Body("Сообщение. Текст письма"); $m->Cc( "kopiya@asd.ru"); // кому отправить копию письма $m->Bcc( "skritaya_kopiya@asd.ru"); // кому отправить скрытую копию $m->Priority(4) ; // установка приоритета $m->Attach( "/toto.gif", "", "image/gif" ) ; // прикрепленный файл типа image/gif. типа файла указывать не обязательно $m->smtp_on("smtp.asd.com","login","passw", 25, 10); // используя эу команду отправка пойдет через smtp $m->Send(); // отправка echo "Письмо отправлено, вот исходный текст письма:<i>", $m->Get(), "</i>"; |
В этом примере все достаточно расписано, процесс отправки прост и понятен. Ксе заголовки письма формируются автоматически, кодировка письма UTF-8, хотя вы всегда можете указать свою. Так же поддерживаются вложения в теле письма, таким образом, что вы можете прикрепить файл или несколько файлов если это понадобится.
Сам же класс вы можете скачать по данной ссылке, в его коде все достаточно хорошо прокомментировано, так, что ядумаю проблем у вас с ним не возникнет. Класс работает с PHP 4 и выше, в ближайшее время выложу переработанный класс для PHP 5, думаю он не особо будет отличаться, но несколько новых фишек в нем появится.
Похожие записи
Оставить комментарий
Senior, Architector
предложить оффер
- Исполнитель пропал, почему такое случается и понять с кем работать? спросил (а) Артем
- Можно ли WordPress считать универсальным движком? спросил (а) Андрей
- Что такое самописный скрипт или CMS? спросил (а) Антон
- Как при поиске в linux используя grep, добавить исключения? спросил (а) Алексей
- Как создать публичный ключ в RSA? спросил (а) Сергей
- Интеграция Тинькофф банк Эквайринг на сайт для приема платежей к записи
- Скрипт парсинга форума к записи
- Интеграция по API с страховым маркетплейсом INSSMART к записи
- Интеграция Тинькофф банк Эквайринг на сайт для приема платежей к записи
- Joomla не пускает в админку к записи
- Все что нужно для работы с WSDL к записи
- Интеграция по API с страховым маркетплейсом INSSMART к записи
Archive
- +2023 (2)
- Март 2023 (1)
- Февраль 2023 (1)
- +2022 (21)
- Декабрь 2022 (11)
- Ноябрь 2022 (1)
- Май 2022 (2)
- Апрель 2022 (2)
- Март 2022 (3)
- Февраль 2022 (1)
- Январь 2022 (1)
- +2021 (17)
- Декабрь 2021 (5)
- Ноябрь 2021 (2)
- Июль 2021 (1)
- Июнь 2021 (2)
- Май 2021 (5)
- Апрель 2021 (1)
- Март 2021 (1)
- +2020 (20)
- Декабрь 2020 (6)
- Сентябрь 2020 (2)
- Август 2020 (1)
- Июль 2020 (2)
- Май 2020 (2)
- Апрель 2020 (2)
- Март 2020 (2)
- Февраль 2020 (1)
- Январь 2020 (2)
- +2019 (18)
- Декабрь 2019 (3)
- Ноябрь 2019 (2)
- Октябрь 2019 (2)
- Сентябрь 2019 (1)
- Август 2019 (2)
- Июль 2019 (1)
- Июнь 2019 (1)
- Апрель 2019 (2)
- Март 2019 (1)
- Февраль 2019 (3)
- +2018 (44)
- Декабрь 2018 (4)
- Ноябрь 2018 (7)
- Октябрь 2018 (8)
- Сентябрь 2018 (1)
- Август 2018 (4)
- Июль 2018 (5)
- Май 2018 (3)
- Апрель 2018 (7)
- Март 2018 (1)
- Февраль 2018 (2)
- Январь 2018 (2)
- +2017 (19)
- Декабрь 2017 (2)
- Ноябрь 2017 (1)
- Октябрь 2017 (1)
- Сентябрь 2017 (2)
- Июль 2017 (1)
- Июнь 2017 (1)
- Май 2017 (2)
- Апрель 2017 (3)
- Март 2017 (2)
- Февраль 2017 (1)
- Январь 2017 (3)
- +2016 (37)
- Декабрь 2016 (3)
- Ноябрь 2016 (3)
- Октябрь 2016 (2)
- Сентябрь 2016 (3)
- Август 2016 (7)
- Июнь 2016 (3)
- Май 2016 (3)
- Апрель 2016 (3)
- Март 2016 (1)
- Февраль 2016 (1)
- Январь 2016 (8)
- +2015 (36)
- Ноябрь 2015 (5)
- Октябрь 2015 (4)
- Сентябрь 2015 (1)
- Август 2015 (8)
- Июнь 2015 (1)
- Май 2015 (4)
- Апрель 2015 (8)
- Март 2015 (3)
- Февраль 2015 (2)
- +2014 (26)
- Ноябрь 2014 (2)
- Октябрь 2014 (5)
- Сентябрь 2014 (6)
- Июль 2014 (1)
- Июнь 2014 (2)
- Май 2014 (3)
- Апрель 2014 (6)
- Февраль 2014 (1)
- +2013 (27)
- Декабрь 2013 (2)
- Ноябрь 2013 (1)
- Октябрь 2013 (1)
- Август 2013 (1)
- Июль 2013 (3)
- Июнь 2013 (10)
- Май 2013 (1)
- Апрель 2013 (2)
- Февраль 2013 (3)
- Январь 2013 (3)
- +2012 (42)
- Декабрь 2012 (2)
- Ноябрь 2012 (3)
- Октябрь 2012 (7)
- Сентябрь 2012 (2)
- Август 2012 (1)
- Июль 2012 (3)
- Июнь 2012 (2)
- Май 2012 (6)
- Апрель 2012 (2)
- Март 2012 (8)
- Февраль 2012 (5)
- Январь 2012 (1)
- +2011 (57)
- Декабрь 2011 (6)
- Ноябрь 2011 (2)
- Октябрь 2011 (3)
- Сентябрь 2011 (5)
- Август 2011 (4)
- Июль 2011 (3)
- Июнь 2011 (3)
- Май 2011 (3)
- Апрель 2011 (4)
- Март 2011 (10)
- Февраль 2011 (5)
- Январь 2011 (9)
- +2010 (43)
- Декабрь 2010 (7)
- Ноябрь 2010 (21)
- Октябрь 2010 (14)
- Сентябрь 2010 (1)
Свежие записи
- Почему на сайте, что-то может «само» сломаться? 16.03.2023
- Как быстро писать статьи под низкочастотные запросы 28.02.2023
- Разработка сайта для Андрея Ковалёва 30.12.2022
- Разработка плагина для WordPress — Аудиогид 12.12.2022
- Оптимизация скорости работы сайта, поиск слабых мест (от CPU до MySQL) 07.12.2022