Я разработал PHP-код, который извлекает адреса электронной почты из списка и отправляет электронные письма один за другим. Я использую библиотеку PHPMailer для отправки через мою учетную запись Gmail.Оптимизация времени в почтовых сообщениях SMTP с использованием PHPMailer
Мое намерение - отправить около 5000 писем за раз. (Не волнуйтесь, это не спам. Это уведомления о предстоящем событии для его участников.) Однако до сих пор мой лучший результат - 133 письма, где код работает в течение 5 минут. Это очень медленно. Думаю, я могу продлить время выполнения с set_time_limit()
. Тем не менее, для полного завершения отправки всех электронных писем потребуется около 3 часов.
Несколько уточнений относительно моего кода: 1. Я сохранивших связь SMTP живой с SMTPKeepAlive = true;
2. Настройку электронной почты, а также соединения, находится вне контура. Внутри цикла я только извлекаю идентификатор электронной почты, передаю его в AddAddress и отправляю. 3. Я хотел бы придерживаться своего собственного кода, а не использовать веб-сайт/программное обеспечение для рассылки.
Возможно ли оптимизировать процесс и завершить его в течение нескольких минут?
Это звучит, как вы делаете большинство вещей в порядке. Вы основывали свой код на примере списка рассылки, предоставляемом PHPMailer? Однако Gmail никогда не будет очень быстрым. Для большей скорости отправьте свои сообщения в местный MTA, который может выступать в качестве реле. Используя этот механизм, я могу получить до 1 миллиона сообщений в час; 5000 займет всего несколько секунд. – Synchro
Используйте профайлер, чтобы найти, где ваш код проводит свое время. – Robert
Вы сказали, что ваш выход из SMTP-соединения открыт и отправляет все 5000 писем в рамках одной и той же SMTP-сессии? Есть ли причина для этого, потому что многие брандмауэры (включая ту, где я работаю) теряют длительные соединения. Там также указаны ставки по количеству сообщений электронной почты в течение часа с определенного IP-адреса. – Kitson88