Существует несколько способов решения этой проблемы. Идея MightyE по работе с менеджером списков рассылки, вероятно, является «правильной вещью» (tm) - создать список рассылки с использованием Listman, Sympa, Majordomo или одного из другие сотни менеджеров списков рассылки. Зачастую легко управлять им из скрипта PHP, а затем вы отправляете одно электронное письмо на адрес списка рассылки, а остальное делает менеджер.
При этом, это решение требует некоторой нетривиальной настройки и имеет серьезный недостаток, заключающийся в том, что его очень трудно реализовать, когда вам нужно динамически генерировать целевые электронные письма (то есть каждое электронное письмо отправляется в отдельную группу электронной почты) адреса).
Другой, более простой способ - использовать поворот ответа Justastefan (это позор, что за него так мало проголосовали): у него есть серьезные проблемы, но его можно заставить работать.
Что вам нужно сделать, так это убедиться, что подпрограмма mail()
вашего PHP-скрипта доставляется в локальный MTA. Это установка по умолчанию на серверах Linux / BSD. Также убедитесь, что вы используете хороший MTA, такой как postfix
или exim
. Затем, когда вы хотите отправить массовое электронное письмо, создайте список заголовков BCC для отправки:
$bcc = array();
while($data = mysql_fetch_assoc($resultat)){
$bcc[] = "Bcc: {$data['email']}";
}
sendMail($bcc);
function sendMail($extraheaders){
...
mail($to, $subject, $text, array_merge($headers, $extraheaders));
}
Это довольно эффективный способ - заголовки BCC довольно компактны и анализируются только локальной службой MTA, которую mail()
доставляет напрямую.
Есть несколько предостережений, о которых вам нужно позаботиться, в противном случае почтовые серверы получателей, скорее всего, будут помечать ваши письма как «спам»:
- Всегда убедитесь, что у вас есть действительный адрес «Кому», который может принимать (и, возможно, молча игнорировать) электронные письма - каждое письмо также будет отправлено туда. Этот адрес «Кому» должен выглядеть законно.
- Обязательно добавьте заголовок «Reply-To» с адресом электронной почты, чтобы получатели могли легко ответить вам.
- Убедитесь, что установлен правильный заголовок «Return-Path» с допустимым адресом электронной почты, который может принимать отказы электронной почты - пропущенный или недействительный «Return-Path» является единственной наиболее вероятной причиной сбоя автоматической электронной почты.