Меню Закрыть

Php отправка почты html

Содержание

Отправка писем в php осуществляется с помощью функции mail()

to — емайл получателя
subject — заголовок письма
message — текст письма, сообщение
mailheaders — почтовые заголовки

Отправка обычного текстового письма

Это самый простой способ отправки писем. Вы просто указываете емайл получателя, отправителя и формат text/plain в заголовке. Далее идет пример

Отправка html-письма, в которое можно вставлять таблицы, рисунки, различные шрифты, стили оформления

Отправка писем в html формате почти ничем не отличается от отправки писем в текстовом формате. В заголовке вы указываете формат письма text/html а в самом письме вместо обычного текста помещаете html-код.

Рассмотрим на примере

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

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

Отправка писем сразу нескольким адресатам

Чтобы отправить письмо сразу нескольким адресатам, лучше всего использовать заголовок Bcc: который отправляет копию письма на указанный емайл

Содержание статьи

1. Отправка письма mail PHP Тип text/plain
2. Отправка письма mail PHP Тип text/html
3. Как использовать CSS в письме? (для mail PHP)

1. Отправка письма mail php Тип text/plain

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

2. Отправка письма mail php Тип text/html

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

3. Как использовать в письме CSS?

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

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

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

С div то же самое

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

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

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

Читайте также:  Грамматический разбор предложений по русскому упражнения

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

Обычно я пишу вступление о том, почему данная тема так важна для изучения. Но не в этот раз, потому что здесь, уверен, ни у одного человека не возникнет вопрос: "Зачем отправлять 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(). Принимает эта функция четыре параметра, три из которых являются обязательными:

Читайте также:  Logitech mx anywhere 2 и 2s отличия

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

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

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

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

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Она выглядит вот так:

  • BB-код ссылки для форумов (например, можете поставить её в подписи):
  • Комментарии ( 20 ):

    А как сделать автоматическое сообщение вот такие сообщения например это "вместо_этого_текста_приклепленный_фаил Вот файл который вы заказали с вместо_этого_текста_название_сайта. Если вы не заказывали данный файл просто игнорируйте это сообщение." или "вместо_этого_текста_имя_пользователя на ваш комментарий ответили!"?

    Для этого надо делать шаблон письма, например, такой: "%user% на Ваш комментарий ответили". Затем через PHP перед отправкой надо заменить с помощью функции str_replace %user% на конкретное имя пользователя.

    Читайте также:  Исходный файл не может быть прочтен

    Спасибо, но вопрос был как сделать письмо чтобы автоматический приходило всем зарегистрированным, или каким-то особенным пользователям, или вообще просто любым.

    Это надо сделать в цикле. Если же пользователей много, то здесь всё гораздо сложнее, так как сервер может не выдержать. Для отправки письма большому количеству пользователей нужно запускать скрипт много раз, каждый раз отправляя небольшие партии. Например, при первом запуске отправить 20 писем. При втором ещё 20, при третьем ещё 20 и так далее, пока не будут отправлены все письма. Интервал надо делать хотя бы 30 секунд.

    А если написать
    Content-type: text/html; charset=windows-1251
    "; mail ($to, $subject, $message, $headers); ?> то письмо отправится на почтовые ящики 1, 2, 3? И как сделать такое уведомление автоматическое, например пользователь отправил письмо на форум, и ему на почтовый ящик такое письмо "Вы отправили новое сообщение на форум вместо_этого_текста_название_сайта"?

    Да, письмо дойдёт до всех трёх ящиков. Однако, минус данного способа: каждый из получателей увидит адреса других получателей. Сделать уведомление автоматическим элементарно. Например, при добавлении нового сообщения на форум, надо вызвать функцию mail(). Тогда сразу же придёт уведомление.

    Спасибо, а как сделать каждый из получателей не видел адрес других получателей? Или можете сказать как Вы делали такие уведомления?

    Надо через цикл (например, for) по очереди вызывать функцию mail, каждый раз отправляя одному получателю.

    Михаил, очень нужна ваша помощь. на моём тестовом хостинге не работает функция "mail", но там можно через сторонний SMTP сервер. Расскажите как им пользоваться,и как его настроить. Прошу расскажите мне или напишите статью. Оооочень надо

    Проверьте можно ли на хостинге прямо указать сторонний SMTP, чтобы функция mail на него отправляла. Либо поищите скрипты, которые будут сами отправлять почту в обход стандартной функции.

    извините за нелепый вопрос: а как на этот скрипт попадает пользователь? ведь РНР "сидит" и работает на сервере. и можно ли каким то образом РНР-скрипты вставлять в HTML страницы.

    Пользователь к нему обращается, отправляя запрос. В HTML-страницах нельзя использовать PHP, но в PHP-коде можно использовать HTML.

    Рекомендуем к прочтению

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

    Ваш адрес email не будет опубликован.