Отладка отправки почты в Windows

При разработке Windows приложений или сайтов с использованием технологий PHP или ASP.NET возникает необходимость тестирования отправки сообщений электронной почты. Задача вроде бы простая на первый взгляд, но есть несколько подводных камней, которые нужно учитывать. Существует несколько подходов к решению задачи тестирования отправки почты. Некоторые способы универсальны, другие рассчитаны на применение какой то конкретной технологии разработки. Ниже я постараюсь описать как достоинства так и недостатки каждого известного мне подхода. На всякий случай напомню, что за отправку сообщений отвечает почтовый сервер, принимающий входящие соединения по протоколу SMTP.  Большинство распространенных языков программирования имеют в распоряжении средства, позволяющие отправить сообщение при помощи вызова одной специальной функции.

Первый вариант — использование реального почтового SMTP сервера, расположенного во внешней сети.

Для проверки отправки почты можно использовать практически любой внешний SMTP сервер Это самый простой способ для проведения разового тестирования. Можно воспользоваться услугами бесплатных почтовых систем, таких как Google Mail или Mail.ru … Нужно только правильно настроить параметры соединения с SMTP сервером. Не все знают, что многие провайдеры позволяют своим абонентам использовать SMTP сервер, работающий в их сети. Однако по каким то причинам провайдеры могут не слишком рекламировать такую возможность. Я рекомендую обратиться в вашу службу поддержки и узнать можно ли использовать SMTP и уточнить параметры подключения к серверу. Существенные минусы такого подхода — почта, которую пытается отправить приложение уйдет реальному адресату даже если это не входило в ваши планы. Поэтому всегда нужно сначала убедиться, что адрес получателя сообщения это на самом деле адрес, предназначенный для тестирования. Другой возможный недостаток — скорость соединения с сервером. Особенно сильно этот недостаток сказыватся при попытке отправить большое сообщение с несколькими вложениями. Проверить, что на самом деле было отправлено можно с помощью любого почтового клиента, настроенного на получение писем с адреса получателя.

Второй вариант — почтовый сервер на машине разработчика

Можно установить на локальной машине полноценный почтовый сервер. В этом случае разработчик получает больше гибкости в процессе тестирования, так как у него есть полный доступ к настройкам сервера. Это позволяет, к примеру, настроить переадресацию всей почты на один из почтовых аккаунтов этого сервера. То есть разработчик имеет возможность использовать различные адреса получателя. Для проверки отправленной почты снова можно воспользоваться обычным почтовым клиентом, который в данном случае будет соединяться с локальным почтовым сервером по POP или IMAP протоколу. В качестве недостатков такого подхода я бы указал некоторую тяжеловесность решения. Можно найти простой бесплатный почтовый сервер (например Courier Mail Server) но это не избавит от необходимости его настройки, прописывания правил переадресации почты и использования почтового клиента.

cms_main

Третий вариант — замена модуля отправки почты

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

Четвертый вариант — имитация SMTP сервера

Напоследок оставлю мой любимый подход к тестированию почты — использование программы, имитирующей SMTP сервер, установленный на локальной машине. Конечно, в сети есть множество подобных инструментов. Лично я пользуюсь Test Mail Server Tool. Это простое приложение не требует большого количества системных ресурсов и совершенно бесплатно может быть использовано в любых целях. Полученные сообщения сохраняются в папке, указанной в настройках программы в виде .eml файла и при получении автоматически открываются соответствующей программой.

Снимок1

Если по каким то причинам у вас нет программы, которая позволяет открывать .eml файлы то вот еще одна хорошая бесплатная утилита: Mail Viewer.

Снимок2

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

Думаю, приведенной информации должно быть достаточно для того, чтобы сделать свой выбор Smile

Отладка отправки почты в Windows: 2 комментария

  1. Alexey

    Хмм, извините, но имхо пахнет велосипедом.
    У SmtpClient есть транспорт отправки почты (DeliveryMethod, есть и разные конструкторы) — выбираете PickupDirectory, задаете удобный каталог и получаете свои .eml сообщения в виде файлов в указанной директории. Просматривать можно стандартным Outlook Express, или если не используете сложных кодировок — любым редактором, формат достаточно прост и читабелен, заодно и поля в сообщении можно контролировать.
    Еще лично мне в отладке почты сильно помогает декодер Темы Лебедева — можно много всякого узнать, какие же кривые программы для отправки почты пишут программисты.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *