Я использую библиотеку PHP SwiftMailer для массовой отправки электронных писем (после CANSPAM и RFC).
Все работает нормально, пока я не натыкаюсь на домен, у которого нет соответствующей записи MX в DNS. В этот момент мой скрипт просто зависает - я предполагаю, что это из-за того, что sendmail не вернулся. Это может длиться всего несколько минут, а может длиться много часов.
Я подтвердил, что адреса, на которых висит мой скрипт (slash sendmail), не имеют записи DNS MX. Все остальное отправляет нормально.
Есть ли способ проверить, существует ли DNS MX внутри PHP, прежде чем я попытаюсь отправить сообщение? Является ли это масштабируемым (то есть, действительно ли этот дополнительный поиск в DNS замедлит меня, или это будет нормально, потому что MX кэшируется локально для использования sendmail при доставке сообщения)?
Спасибо за вашу помощь
--- ОБНОВЛЕНИЕ --- Я попробовал приведенные ниже решения, которые помогли мне сузить круг проблем. Кажется, дело не в том, существует ли запись MX. Проблема в том, что поиск DNS занимает вечность, чтобы вернуться. Есть ли простой способ установить время ожидания, чтобы, если DNS не вернется в течение ‹ 5 с, я мог двигаться дальше?