Отправка массовой электронной почты с использованием PHP

В настоящее время я пишу музыкальный блог. Администратор публикует новую статью каждые 2-3 дня. Как только администратор публикует статью, массовое электронное письмо будет немедленно отправлено примерно 5000 подписчикам.

Каков наилучший способ реализовать функцию массовой почты?

Работает ли следующая функция?

function massmail() 
{
  $content = '...';
  foreach ($recipients as $r) {
    $_content = $content . '<img src="http://xxx/trackOpenRate.php?id='.$r.'">';
    mail($r, 'subject', $_content);
  }
}

Другой вопрос: если все 5000 подписчиков используют Почту Yahoo, будет ли Yahoo рассматривать ее как DDOS-атаку и заблокировать IP-адрес моего SMTP-сервера?

 YOMorales03 янв. 2012 г., 20:18
@ user346665: Так как тысячи сообщений BCC будут отправляться в заголовок электронного письма, вы получите следующую фатальную ошибку (я получил ее сам):php-server postfix/sendmail[26573]: fatal: [email protected](33): unable to extract recipients: message header length exceeds safety limit
 Matthew Scharley13 июл. 2009 г., 09:55
Да, но довольно плохо для 5000 получателей, которые я себе представляю.
 user34560224 июл. 2011 г., 11:57
Что произойдет, если я отправлю 5000 писем с функцией PHP mail (). Но все письма должны быть в BCC, чтобы не зацикливаться с mail ()? Это нормально?

Ответы на вопрос(11)

Do not отправлять электронную почту на 5000 человек, используя стандартные инструменты PHP. Вы будете забанены большинством интернет-провайдеров за считанные секунды и даже не узнаете об этом. Вам следует либо использовать какое-либо программное обеспечение для списков рассылки, либоПоставщик услуг электронной почты сделать это.

 13 июл. 2009 г., 13:03
Это может быть правдой, да, но если вы держите ваши письма ниже 100 сообщений в час, то большинство провайдеров не будут вам сильно огорчаться; однако, как только вы злоупотребите их сетью, вы за это! Просто убедитесь, что ваши заголовки структурированы в соответствии со стандартами; Не злоупотребляйте сетями, и вы будете в безопасности.

пераций. Одновременная отправка массовой почты, безусловно, не годится, это может быть обнаружено как спам, ddos, сбой вашего сервера и т. Д.

Таким образом, CRON может быть отличным решением: отправить 100 писем одновременно, затем подождать несколько минут, следующие 100 и т. Д.

 03 янв. 2012 г., 20:58
Небольшое дополнение для поддержки заявления @Martin:php.net/manual/en/features.commandline.differences.php
 18 мар. 2011 г., 16:52
При запуске PHP-скрипта из CRON нет таймаута php, так как вы запускаете PHP из командной строки. Это означает, что вместо установки CRON каждые несколько минут вы можете добавить в код команду sleep, которая будет содержать 100 отправленных электронных писем, а затем sleep (some_time), и скрипт продолжится.

Google Feedburner который автоматически отправляет обновления подписчикам по электронной почте.

Это & APOS; sfree и он используетGoogle's infrastructure, Не может быть лучше, чем это. Я использую его для некоторых своих сайтов / блогов, и он прекрасно работает.

Недостатком являетсяdoesn't похоже, активно развиваются иnot supported больше Я рекомендую вам не обращать внимания на коммерческий список рассылки, если вы серьезно относитесь к своему бизнесу.

затем обрабатываю их по одному, как вы это делали в своем коде (если вы хотите использовать swiftmailer или phpmailer и т. Д., Вы тоже можете это сделать).

После отправки каждого письма обновите базу данных, чтобы записать дату / время отправки.

Поместив их в базу данных сначала у вас есть

a record of who you sent it to if your script times out or fails and you have to run it again, then you won't end up sending the same email out to people twice you can run the send process from a cron job and do a batch at a time, so that your mail server is not overwhelmed, and keep track of what has been sent

Имейте в виду, как автоматизировать отклоненные или недействительные сообщения, чтобы они могли автоматически удаляться из вашего списка.

Если вы отправляете так много электронных писем, вы обязательно получите несколько отскоков.

Lotus Notus а такжеPHP, Это решение работает, если у вас есть доступ к почтовому серверу или вы можете запросить что-тоmail server Администратор:

1) Создать группу вmail server: "Отдел продаж".
2) Назначитьgroup учетные записи, которые вы должны быть в группе.
3) Присвойте интернет-адрес группе: [email protected]
4) Создайте свой PHP-скрипт, используя функцию mail:
   $ to = & quot; [email protected]" ;;
   mail ($ to, $ subject, $ message, $ headers);

Это сработало для меня, и все учетные записи, входящие в группу, получают почту.

Лучшие из удач.

http://pear.php.net/package/Mail_Mime http://pear.php.net/package/Mail http://pear.php.net/package/Mail_Queue

рыдать.

PS: НЕ используйте mail () для отправки 5000 писем. В дополнение к тому, что говорили все остальные, это крайне неэффективно, поскольку mail () создает отдельный сокет для каждого набора электронной почты, даже для того же MTA.

Решение Вопроса

использование функции mail (), поставляемой с PHP, не является оптимальным решением. Он легко помечается как спам, и вам нужно настроить заголовок, чтобы убедиться, что вы отправляете электронные письма в формате HTML. Что касается того, будет ли работать фрагмент кода, то это будет работать, но я сомневаюсь, что вы получите HTML-код внутри него правильно, безуказание дополнительных заголовков

Я предлагаю вам взглянуть наSwiftMailer, которая имеет поддержку HTML, поддержку различных типов MIME и аутентификацию SMTP (которая с меньшей вероятностью пометит вашу почту как спам).

 20 февр. 2014 г., 13:26
+1 Swiftmail, использовал его несколько лет назад и никогда не оглядывался назад.
 13 июл. 2009 г., 10:03
+1 Вы также можете выполнить некоторую отложенную / синхронизированную отправку, в зависимости от того, насколько хорошо вы можете управлять почтовым сервером. Некоторые целевые серверы могут блокировать вас, если вы отправляете сотни сообщений одновременно. Кроме того, вы можете вести подробный журнал о состоянии каждого отправленного электронного письма. Помогут иметь более 100 тестовых учетных записей электронной почты (ваши тестовые учетные записи) и поэтапное их тестирование с различным содержанием.

PHPlist? Он также построен на основе PHP Mailer, и многие отраслевые лидеры используют его. Я сам использовал его пару раз для рассылки массовых писем своим клиентам. Преимущество phplist заключается в том, что вы можете регулировать количество сообщений на уровне домена и времени.

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

 23 авг. 2018 г., 14:21
Вы имеете в виду www.phplist.org вместо .com?

вам гораздо лучше пользоваться специальным программным обеспечением для рассылки.почтальон это часто используемый пример, но такой простой, какmlmmj может хватить. Отправка массовых писем на самом деле является более сложной задачей, чем кажется. Вам нужно не только отправлять письма, но и отслеживать & quot; мертвые & quot; адреса, чтобы избежать вашей почты или, что еще хуже, вашего почтового сервера, помеченные как спам. Вы должны обращаться с людьми, отказавшимися от подписки, по той же причине.

Вы можете реализовать эти вещи самостоятельно, но, в частности, обработка отказов - сложная и неоправданная работа. Использование менеджера списка рассылки значительно упростит задачу.

Что касается того, как сделать вашу почту приятной для Yahoo, это совсем другой вопрос. Несмотря на все свои недостатки, они, кажется, вкладывают большие средства вSPF и DomainKey. Вам, вероятно, придется реализовать их, что потребует сотрудничества с администратором вашего почтового сервера.

 24 сент. 2015 г., 01:11
Спасибо за этот совет, Мичиэль. Я хотел разослать около 4000 писем клиентам, которые сделали предварительный заказ с сайта, которым я управляю. Есть много хороших аргументов в пользу использования сервиса, и когда я посмотрел на стоимость добавления этих подписчиков в учетную запись Mailchimp моего клиента (на один месяц), это было примерно на 30 долларов США. Гораздо экономичнее, чем делать это вручную.
 13 июл. 2009 г., 10:56
Если я не ошибаюсь, разве SwiftMailer не построен поверх PHPMailer?
 13 июл. 2009 г., 11:07
Есть много вещей, построенных поверх PHPMailer, PHPList также построен поверх PHPMailer

сс.

<?php
    $message = Swift_Message::newInstance()
      ->setSubject('Let\'s get together today.')
      ->setFrom(array('[email protected]' => 'From Me'))
      ->setBody('Here is the message itself')
      ->addPart('<b>Test message being sent!!</b>', 'text/html');

    $data = mysql_query('SELECT first, last, email FROM users WHERE is_active=1') or die(mysql_error());
    while($row = mysql_fetch_assoc($data))
    {
       $message->addTo($row['email'], $row['first'] . ' ' . $row['last']);
    }

    $message->batchSend();
?>

Ваш ответ на вопрос