В web-проектах, важную роль играет обратная связь пользователя и сайта. Так уж заведено изначально, что пользователь теряет всякую связь с сайтом после того, как закрывает вкладку с ним. Что бы пользователь еще раз зашел на сайт, его нужно туда привлечь.
В обычных блогах или форумах используют для этого e-mail рассылку. Это самый дешевый вид рассылки. В php есть даже специальная функция mail. Но пользоваться ей, в серьезных проектах, не рекомендуется. На это есть ряд причин. Первая из них это надежность, а точнее ненадежность. Функция не сама посылает письмо, а отправляет его на внутренний mail сервер. А уже он занимается пересылкой. Сама же функция возвращает только статус того, ушла ли операция отправки на сервер удачно. Отправлено ли письмо она узнать не может.
Кроме того, функция не всегда корректно работает с кодировкой. Поэтому лучше использовать специализированные скрипты, к примеру phpmailer
Этот скрипт позволяет отправлять почту, используя для этого не только свой сервер, как функция mail, но и сторонние почтовые сервера (gamil, yandex, и т.п.). На гитхабе есть примеры отправки. Они очень простые.
Вот один из базовых примеров отправки почты с аттачем:
<?php require_once('../class.phpmailer.php'); $mail = new PHPMailer(); // defaults to using php "mail()" $body = file_get_contents('contents.html'); $body = preg_replace('/[\]/','',$body); $mail->SetFrom('name@yourdomain.com', 'First Last'); $mail->AddReplyTo("name@yourdomain.com","First Last"); $address = "whoto@otherdomain.com"; $mail->AddAddress($address, "John Doe"); $mail->Subject = "PHPMailer Test Subject via mail(), basic"; $mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test $mail->MsgHTML($body); $mail->AddAttachment("images/phpmailer.gif"); // attachment $mail->AddAttachment("images/phpmailer_mini.gif"); // attachment if(!$mail->Send()) { echo "Mailer Error: " . $mail->ErrorInfo; } else { echo "Message sent!"; } ?>
Про остальные возможности Вы можете почитать в этой статье
Добавлю еще, что когда на сайте происходят некие события, о которых нужно сообщить пользователю, не стоит этого делать сиюсекундно. Верным решением будет: добавлять запись в специально созданную для этого табличку в базе данных, а уже потом по cron'у делать рассылку. Это избавит Ваших пользователей от томительного ожидания завершения всех рассылок. К тому же можно повысить надежность рассылки, отправляя письма пакетами, по n штук.
Кроме mail рассылки, на сервисах имеющих социальную составляющую, стоит применять sms оповещение Это более дорогой вариант, но и более эффективный. Отправленное sms пользователь увидит и прочитает в 99% случаев. Я еще не видел сервисов у операторов, которые бы имели функции блокировки нежелательного контента в смс. Так что стоит подумать об этом типе рассылки. Опять же замечу, что этот тип оповещения еще более медленный, чем mail. Поэтому его также следует осуществлять пакетами, не в «реалтайме» Вашего web приложения.