Пользователи онлайн
Боты: Google Bot, guest, Inktomi Slurp, InternetSeer

Всего: 4


Подписаться на RSS

Отправка почты средствами PHP

Отправка почты из PHP возможна и она легка в реализации - это одна сторона медали. Вторая сторона, что по-моему это одна из самых спамерских функций во всех языках программирования. Но мы будем изучать ее с "хорошей" стороны :)

bool mail (string $to, string $subject, string $message [, string $additional_headers [, string $additional_parameters]])

Именно функция mail отвечает за отправку писем из PHP (хотя есть и другие, но рассмотрим сейчас самую легкую). На вход функции mail подается от 3 до 5 параметров:

  • $to: Email-адрес кому мы отсылаем сообщение
  • $subject: Тема письма
  • $message: Текст письма
  • $additional_headers: Заголовки письма
  • $additional_parameters: Дополнительные параметры

C первыми тремя параметрами думаю всё понятно, рассмотрим 2 необязательных параметра.

Заголовки письма добавляются по спецификации RFC2822, чтобы что-то понять, надо штудировать сотни страниц английского текста, рассмотрим основные, которые могу пригодиться

From: noreply@phpprogs.ru - указывает с какого Email приходит сообщение

Reply-To: admin@phpprogs.ru - указывает на какой Email должно отсылаться письмо при ответе

Content-type: text/plain; charset=Windows-1251 - указывает тип сообщения и кодировку, если хотите чтобы в письме был HTML, то вместо text/plain укажите text/html

X-Priority: 1 (Higuest) - приоритет сообщения

X-Mailer: CMS-Kolibry - почтовая программа, отправившая сообщение

Со последним параметром не всё так однозначно, применение нашел только когда пользовался услугами хостинга руцентра, там при использовании это функции в поле "ОТ" стоял адрес руцента, помог именно этот параметр, если указать "-fnoreply@phpprogs.ru", то будет корректно отображать поле "ОТ".

Рассмотрим пример отправки

$to = "admin@phpprogs.ru";
$subject = "Тема письма";
$message = "Текст сообщения";
$headers = "From: noreply@phpprogs.ru\r\n".
"Content-type: text/plain; charset=Windows-1251\r\n";
$ok = mail ($to, $subject, $message, $headers);
if ($ok === false)
echo "Письмо отправлено";
else
echo "Ошибка при отправке письма";

Есть вопросы? Задавай!
coocos, 15.04.2010 17:09:38

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

1.Стоит ограничение на количество сообщений

2.IP забанен популярными бесплатными почтовиками

3.Ее тупо нет?

 

Еще вопрос:

Если мы отпраляем сообщение в вендокодировке - его в нее нужно как-то перекодировать?

И еще один:

Как принять почту. Скажем, для подтвержения регистрации.

programmer, 15.04.2010 17:19:56

1. Если есть ограничения на хостинге по времени, то просто ставите sleep(). Если забанен IP, то выход использовать SMTP-аутентификацию (В следующей статье расскажу как). Если "тупо нет" или отключена данная функция, то надо менять хостера.

2. Если в Win1251, то ничего делать не надо

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



Отвечу на вопросы по PHP

coocos, 15.04.2010 17:26:24

Если поставить sleep(), то скрипт "повиснет"? ждем статью про SMTP =)

programmer, 15.04.2010 17:28:04

если поставить sleep(10), то скрипт подождет 10 секунд и потом продолжит работу, ну это в том случае если есть, например, ограничение на 6 писем в минуту



Отвечу на вопросы по PHP

coocos, 15.04.2010 17:30:07

Если поставить sleep(), то скрипт "повиснет"? ждем статью про SMTP =)

coocos, 15.04.2010 17:31:32

Боюсь 10 секундная задержка будет неприятна пользователю.

programmer, 15.04.2010 17:33:19

Я говорю про использование sleep, если надо отправить пачку писем, например, с админки, но при этом есть ограничение у хостера



Отвечу на вопросы по PHP

coocos, 15.04.2010 17:34:05

Боюсь 10 секундная задержка будет неприятна пользователю.

coocos, 15.04.2010 17:35:30

А я про регистрацию =)

coocos, 15.04.2010 17:35:56

Кажись что-то с комментариями

coocos, 15.04.2010 17:41:30

Тогда в случае большой нагрузки (помимо регистрации возможны уведомление) менять хостинг?

programmer, 15.04.2010 17:42:03

Да, нехорошо получилось с комментами, 15 писем на мыло пришло. Сейчас подправил, не должно такое вылезать



Отвечу на вопросы по PHP

coocos, 15.04.2010 17:43:06

"Да, нехорошо получилось с комментами, 15 писем на мыло пришло. Сейчас подправил, не должно такое вылезать"

А в чем была проблема?

programmer, 15.04.2010 17:43:22
давайте перейдем на форум, задайте там вопрос

Отвечу на вопросы по PHP

Добавить комментарий
Чтобы оставить комментарий, Вам необходимо зарегистрироваться или авторизироваться