Отправка email посредством PHP. Советы по PHP: Отправка писем при помощи PHP

Содержит только текст (малый вес сообщения)

2. Отправка письма mail php Тип text/html Могут содержать графические html-элементы, сслыки и тп.
Больше объём передаваемой информации

3. Как использовать в письме CSS? Тут я хочу сразу немного огорчить Вас - CSS в привычном для Вас виде не стоит использовать. Mail, Yandex, Google, Outlook - выкидывают стили из писем. Однако, есть выход.

Выполним несколько условий:
1) Надеюсь не нужно пояснять, что используем Content-type: text/html

2) Вспоминаем, что такое table вёрстска. Теперь все стили вписываем только в неё. Можно также вспомнить center , font .




От кого: Иванов Иван Иванович
Адрес: [email protected]
Сообщение: Смотрим и радуемся

С div то же самое

Нужный Вам текст
3) В примере выше с отправкой письма приводилась данная строка. Так вот её не забываем

$headers = "MIME-Version: 1.0" . "\r\n";

4) Используем HTML 3.2 . Вставляем в начало html письма.


5) В качестве background - можно цвет. Хотите фон-изображение - тогда делайте весь текст и фон изображением. Как вариант: можно указать background-image для body.

6) У единственной в ячейке картинки в Gmail появляется 3px отступ снизу, чтобы избежать этого указываем ей

Рад видеть вас на моем блоге сайт. Сегодня рассмотрим, зачем нужна Php функция Mail. Какой бы вы не создали интернет-проект на нем должна быть форма обратной связи, чтобы люди могли с вами общаться. Особенно это актуально для коммерческих проектов. Это сложная тема, о которой я уже говорил в статье « ». Рассмотрим, как использовать данную функцию для отправки сообщений.

Немного теории

Для отправки писем необходим SMTP-сервер. Он есть на всех качественных платных хостингах. Для приема понадобится POP-сервер. Необходимо понимать, что php не отправляет сообщение, он передает команды приложению sendmail, которое и занимается отправкой. Поэтому его нужно иметь. Если вы используете Денвер, то это приложение уже встроено. Все сообщения помещаются в директорию «tmp/!sendmail». Кстати, рекомендую вам, . Это особенно актуально, если вы занимаетесь сайтостроением.

Что это такое

Mail применяется для отправки сообщений при условии что будут выполняться некоторые правила. Самое главное - эта функция не подходит для пересылки большого числа писем. Потому что после каждой отправки она закрывает, а потом опять открывает соединение с почтовым сервером. Это приведет к перерасходу мощностей на хостинге.

Настройка функции происходит в конфигурационном файле php.ini. В нем прописывают путь к лог-файлам, задают значение порта и так далее.

Mail принимает пять аргументов из которых три - обязательные:

  • Адрес отправителя;
  • Тайтл письма;
  • Текст сообщения.

Например, напишем такие строки кода

Некоторые особенности

При работе возникает много нюансов. Они зависят от используемой платформы ОС и других настроек и параметров. Рассмотрим самые основные:

  • При отправке письма заголовок Form нужно задать через необязательный параметр «additional_headers». При его отсутствии может возникнуть ошибка при отправлении;
  • Заголовки разделите символами перевода на новую строку и каретки (\r\n);
  • Длина строки не более семидесяти знаков. Ее регулируйте (\r\n).
Что делать если функция не отправляет письма

Даже с учетом всех перечисленных выше моментов, mail может не работать. При этом на локальном сервере все отправляется как следует. Одной из причин почему так происходит - неправильная настройка функции на хостинге. Поэтому нужно обратиться к конфигурационному файлу php.ini, в котором посмотрите функцию «disable_functions».

Для проверки работоспособности напишите такой несложный код и разместите его в корне созданного интернет-проекта.

Если все работает правильно, то на экране браузера появится цифра один «1». Ее возвратит «print» после выполнения.

Важно! Если вы , то письма сохраняются в папке C:\openserver\userdata\temp\email. При условии, что его вы установили на локальный диск «С».

Отправка с вложением

Рассмотрим пример, как отсылать сообщения с прикрепленным файлом. Для этого используется функция sendMailAttachment(). Рассмотрим, как это работает на примере:

Проблемы с кодировкой

Иногда сообщения приходят в виде вопросов «?» или непонятных символов. От того насколько правильно оно будет перекодировано, зависит прочтет ли его получатель. При стандартных способах отправки php не учитывает кодировку. На эту тему на моем блоге уже была статья «UTF-8 и ». Сам контент сообщения может быть любой кодировки. Вся сложность заключается в заголовке From. По стандарту они должны быть в US-ASCII. Есть две формы кодирования -BASE64 и Quoted-Printable. Первая - более универсальная и работает с UTF-8, поэтому используете ее. Например,

При таком варианте заголовки могут быть нечитаемые. Чтобы решить данную проблему напишите заголовок в таком виде:

$subject = "=?UTF-8?B?" . base64_encode ("Обратная связь" ) . "?=" ;

$subject = "=?UTF-8?B?".base64_encode("Обратная связь")."?=";

Важно! Используйте исключительно UTF-8.

Остались еще вопросы? Рекомендую вам ознакомиться с хорошим курсом Русакова «Создание движка на PHP и MySQL 2.0 ». Изучив его вы не только разберетесь с веб-программированием, но и научитесь писать собственный движок сайта.


Вывод

Итак, работа функции mail, не очень сложна. Мы рассмотрели самые распространенные ошибки, которые могут возникнуть при ее реализации. Хочется порекомендовать вам посетить портал для программистов GeekBrains.ru , где вы наверняка найдете что-то интересное. Подписывайтесь на мою группу ВКонтакте, там тоже вы найдете много полезной информации.

В последние полгода я рьяно взялся за изучение PHP . Как-то давно я скачал себе книжку и читал ее в свободное время. Знаний от этой книги получил ровно ноль. Сейчас в течение полугода я делаю сайт автомобильных объявлений, практически на чистом PHP .

Сегодня решился на написание скрипта, отвечающего за отправку e-mail сообщений с сайта. Оказывается, что в PHP – это делается очень просто.

Как отправляются письма через PHP ?

Для начала хотелось бы пояснить, что PHP не способен отсылать письма самостоятельно. В PHP есть функция, которая работает с почтовыми серверами.

Большинство современных платных хостингов, даже самых дешевых, имеют в своем наборе такой сервер. Чаще всего это sendmail . Вам только остается отослать запрос на отправку и sendmail это сделает.

Еще бы хостинги делали бы бесплатно продвижение сайтов , было бы вообще красота.

PHP -код отправки email`ов

За отправку e-mail в PHP отвечает всего одна функция mail(); , которая имеет синтаксис:

Mail (куда слать, тема сообщений, сообщение, доп. информация);

Лучшим объяснением считается пример, поэтому чтобы избежать лишней воды и сразу объяснить все как есть, пример:

$email = "[email protected]"; $subject = "Тема письма"; $message = "Поздравляем, Вы только что получили письмо.\n Это письмо отправлено средствами PHP"; $headers = "From: adminwa.ru \r\n Content-type: text/plain; charset=utf-8\r\n"; mail ($email, $subject, $message, $headers);

А теперь немного комментариев к приведенному куску кода.

В $email нужно указать адрес получателя вашего сообщения, если их несколько, то через запятую. Только учтите, что каждый, кто получил ваше письмо увидит всех получателей.

$subject должен быть не более 255 символов. Это не ограничение PHP , а стандарт электронных писем.

Переносы строки в $subject и $message осуществляются специальным символом(выражением) – \n

В $headers можно описать дополнительные параметры From – от кого мейл, Content-type – формат письма (можно указать text/plain – обычный текст или text/html – html-разметка), charset – кодировка письма и несколько других.

Все строки в $headers должны быть отделены \r\n.

Вот в принципе и все хитрости. Есть еще конечно несколько дополнительных параметров, как дополнительный email-адрес и другие, но они не всем нужны, а если и понадобятся, то можно легко найти эту информацию в Интернете.

Обычно я пишу вступление о том, почему данная тема так важна для изучения. Но не в этот раз, потому что здесь, уверен, ни у одного человека не возникнет вопрос: "Зачем отправлять e-mail в PHP ?". Поэтому предлагаю сразу приступить к делу и узнать об этом более подробно, тем более, что проще реализации отправки e-mail через PHP и придумать нельзя, так что поймут даже те, кто не знаком с PHP вообще.

Для начала давайте с Вами разберёмся немного с теорией. Скучно, но поверьте важно. Для отправки e-mail необходим SMTP-сервер . На большинстве платных хостингах он обязательно имеется. Однако, если такой возможности нет (допустим, хостинг бесплатный или очень дешёвый), то тогда можно воспользоваться сторонним SMTP-сервером (например, mail.ru ). То есть главное: для отправки необходим SMTP-сервер .

Во-вторых, чтобы принимать e-mail необходим POP-сервер . К чему я всё это говорю. А к тому, что очень часто люди спрашивают на форумах: "Почему у меня не работает отправка e-mail в PHP? ". А при этом люди пытаются отправить письма с сервера, на котором вообще нет SMTP . Очень важно: PHP e-mail не отправляет ! Отправляет e-mail приложение sendmail , которое имеется на операционных системах Unix , на которых и стоят большинство серверов. А PHP просто передаёт команды этому приложению. Надеюсь, объяснил понятно. Поэтому первое, что необходимо сделать - это раздобыть приложение sendmail . Но порадую тех, кто пользуется пакетом Denwer , так как у них это приложение уже встроено. Правда, с одной особенностью. Реальной отправки писем не происходит - они все складываются в директорию "tmp/!sendmail ". Но если письмо, которое Вы отправили в PHP , там оказалось, то можете быть уверены, что на 99% на реальном хостинге всё будет работать. Хотя, если Вам очень хочется по-настоящему отправлять e-mail , то Вы можете скачать sendmail , настроить его на какой-нибудь SMTP-сервер , например, mail.ru , затем изменить путь к sendmail в php.ini (настройки PHP ) и дальше уже радоваться жизни.

А теперь переходим к PHP . Для отправки e-mail используется всего одна функция - mail() . Принимает эта функция четыре параметра, три из которых являются обязательными:

Как видите, всё интуитивно понятно: кому отправлять, какая тема и само сообщение. Если Вы используете пакет Denwer , то после запуска скрипта, Вы сможете найти файл в директории "tmp/!sendmail ", в котором и содержатся данные Вашего письма. Открыть эти файлы можно либо в блокноте, но лучше открыть их в какой-нибудь почтовой программе (например, The Bat или Microsoft Outlook ).

Я не даром написал вперемешку русский и английский текст, чтобы проверить кодировку. Очень часто она распознаётся неправильно, и в результате, пользователи видят "абракадабру ". Чтобы этого избежать необходимо задать кодировку. И как раз для кодировки, а также для других особых параметров и существует четвёртый аргумент функции mail() :

Теперь давайте расшифрую то, что здесь написано. В переменной headers мы задали следующие параметры: в поле "От кого " будет стоять "[email protected] " (то есть сообщения можно отправлять далеко не от своего имени). Сообщение также является обычным текстовым (text/plain ) в кириллической кодировке (windows-1251 ), то есть в нашей с Вами родной кодировке, в которой имеется русский язык и английский. И, кстати, "\n " - это переход на новую строку (аналог
в HTML ).

Также сообщения можно отправлять в HTML-формате . Для этого достаточно всего лишь заменить "text/plain " на "text/html ". И Вы сможете в сообщении использовать HTML-теги . Только не забывайте, что всякие теги, наподобие: " ", " " и другие, - фильтруются любой уважающей себя почтовой системой. Однако, использовать теги оформления ("", " ", "
" и другие) Вы можете. И давайте, напоследок, отправим e-mail с использованием HTML-тегов :

Вот и всё. Как видите, тема очень простая, а отправлять e-mail в PHP очень важно уметь.