Существует ли ограничение при использовании функции php mail?

Я использую php и mysql.

Я собираюсь отправить 10k ++ (десять тысяч плюс) электронные письма для обновления моих подписчиков, и я впервые отправлю их. Я буду использовать функцию php mail, в основном вот что я буду делать:

Сначала получите данные из базы данных:

Select name, email FROM data 

После этого, используя цикл while для отправки данных:

 while($r = mysql_fetch_assoc($exe)){ ... if($mail){ echo "success<br>"; } else { echo "failed<br>"; } } echo "Sent all"; 

Я включаю оператор if .. else, чтобы обеспечить успешное отправку каждого письма. Есть ли что-то, о чем я должен заботиться? Будут ли у меня проблемы при отправке пользователям 10K ++?

Есть ли количество писем, которые вы собираетесь отправить?

Обратите внимание на эту заметку из почтовой документации :

Примечание. Стоит отметить, что функция mail () не подходит для больших объемов электронной почты в цикле . Эта функция открывает и закрывает SMTP-сокет для каждого письма, что не очень эффективно.
Для отправки большого количества электронной почты см. Пакеты «PEAR :: Mail» и «PEAR :: Mail_Queue».

Нет ограничений на количество электронных писем, но есть ограничение по времени для скрипта PHP. См. Параметр max_execution_time, установленный в вашем php.ini, обычно это 20 или 30 секунд. Если вы этого не знаете, используйте phpinfo (), чтобы узнать это.

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

Помимо этого, вы должны заметить, что почтовая функция php по своей сути не оптимизирована. Вы можете попробовать некоторые библиотеки, такие как phpmimemessage или любой другой, что позволит вам сделать некоторые кеширования, например, среди многих других функций.

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

Не создавайте цикл, который пытается отправить почтовые сообщения 10k по почте ()

Кроме того, наиболее вероятный предел, который вы нажмете, будет на вашем почтовом сервере вашего интернет-провайдера или хоста.

Вы также можете посмотреть настройку «реального» списка рассылки, например mailman , или, по крайней мере, с помощью групп псевдонимов (если это возможно).

Также см. Связанные вопросы о serverfault: https://serverfault.com/questions/67154/sending-an-email-to-about-10k-users-not-spam , где упоминается PHPlist , а также другие. И здесь – https://serverfault.com/questions/68357/whats-the-best-way-to-send-bulk-email .

Вы можете использовать грушу :: Mail_Queue http://pear.php.net/package/Mail_Queue/

Это действительно хорошо поработает.