Получаем максимальную пользу от усовершенствованного тега cfmail в ColdFusion MX 6.1

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

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

 

Усовершенствованные возможности почтовой службы в ColdFusion MX 6.1

Ключевыми усовершенствованиями являются:

Содержание статьи:

 

Часть 1. Многоформатные почтовые сообщения и другие усовершенствования почтовых тегов

 

Краткий обзор многоформатных почтовых сообщений Многоформатные почтовые сообщения состоят более чем из одного тела сообщения. Различные почтовые клиенты могут поддерживать различные форматы писем и рассчитывают на более высокий опыт пользователей. Например, одно и тоже многоформатное почтовое сообщение одновременно может состоять из HTML версии и версии в виде обычного текста. Те почтовые клиенты, которые поддерживают HTML версии писем, отобразят это письме в виде HTML, а те, которые поддерживают только обычный текст, отобразят в виде обычного текста.

 

Новый тег cfmailpart ColdFusion MX 6.1 предлагает новый для CFML тег - cfmailpart. Использование этого тега в сочетании с тегом cfmail позволяет управлять различными частями почтового сообщения.

Взгляните на следующий пример:

Этот пример доставит письмо в двух разных форматах: один обычным текстом и один как HTML. Какой вид письма увидит получатель, зависит от используемого им почтового клиента. Как правило, сначала нужно указывать письмо наименьшего размера, а затем большего, и так по возрастанию.

В большинстве случаев использования этой возможности вы будете создавать письма в двух форматах: обычный текст и HTML. Однако, вы можете указывать тип MIME в атрибуте type тега cfmailpart (например, text/x-aol является MIME типом для pre-AOL 6.0 AOL почтовых HTML клиентов). Указывая атрибут type, вы будете уверены, что пользователь получить письмо в формате, подходящем для его почтового клиента.

Тег cfmailpart содержит 3 атрибута, приведенные в таблице ниже:

Имя атрибута Назначение
type Обязательный атрибут, позволяющий указать MIME тип тела письма.
wraptext Не обязательный атрибут, позволяющий указать количество символов, после которого текст сообщения будет перенесен на следующую строчку.
charset Не обязательный атрибут, позволяющий указать кодировку письма.

 

Улучшенный объект запроса тега cfpop

В дополнение к описанию нового тега cfmailpart, ColdFusion MX 6.1 предлагает сопутствующие изменения в теге cfpop. С помощью этих изменений вы можете легко распознавать многоформатные сообщения с удаленных почтовых серверов.

Тег cfpop используется для считывания сообщений с POP сервера. Когда сообщение получено, создается объект запроса, в который помещаются полученные сообщения.

В ColdFusion MX 6.1 в объекте запроса тега cfpop добавлены 2 новые колонки для сообщений обычным текстом и в HTML формате: queryname.textBody и queryname.HTMLBody.

 

Улучшенный набор кодировок

ColdFusion MX 6.1 также содержит улучшенный набор кодировок для создаваемых сообщений. Если вы посмотрите в раздел управления почтой в Административном модуле ColdFusion, то заметите там новый раздел Mail Charset Setting. Здесь вы можете указать кодировку, используемую по умолчанию.

В ColdFusion MX 6.1 вы можете выбрать одну из множества кодировок
Рисунок 1. В ColdFusion MX 6.1 вы можете выбрать одну из множества кодировок.

Также вы можете указать кодировку в атрибуте charset тега cfmailpart или в атрибуте charset тега cfmail (новинка в ColdFusion MX 6.1).

 

Поддержка SMTP аутентификации

ColdFusion MX 6.1 также предлагает поддержку SMTP аутентификации. Как разработчик вы можете добавить не обязательные атрибуты username и password в теге cfmail. Это позволит отправлять сообщения через почтовые сервера, требующие SMTP аутентификацию.

Кроме того, параметры атрибутов username и password тега cfmail вы можете указывать и в Административном модуле ColdFusion там, где вы указываете адрес почтового сервера (например, jcummings:mypassword@mail.mauzy-broadway.com).

Указав эти параметры в Административном модуле ColdFusion вам больше не понадобится указывать их во всех тегах cfmail, но в то же время, это дает доступ к почтовому серверу всем кто имеет доступ к Административному модулю ColdFusion.

 

Часть 2. Новая опция отслеживания неудачных попыток соединения с почтовым сервером

В версии Enterprise присутствует еще одна новая опция, где вы можете указывать несколько резервных почтовых серверов, как показано на Рисунке 2.

Для отправления писем вы можете указывать несколько резервных почтовых серверов
Рисунок 2. Для отправления писем вы можете указывать несколько резервных почтовых серверов.

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

Если вы указали несколько резервных почтовых серверов, то для отправления сообщений ColdFusion MX 6.1 пытается использовать первый указанный почтовый сервер. Если он не доступен, то ColdFusion MX 6.1 двигается по списку резервных почтовых серверов, пока не сможет отправить сообщения.

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

 

Усовершенствованные опции управления почтовыми сообщениями

 

Улучшенное управление почтой

С помощью ColdFusion MX 6.1 у вас, как у администратора, есть больший контроль над тем, как ваш сервер работает с почтой.

Снова посмотрев на раздел Mail Spool Settings в ColdFusion MX 6.1 версии Enterprise, мы заметим поле для ввода Mail Delivery Threads, показанное на Рисунке 3.

Указываем количество одновременных попыток отправить сообщения
Рисунок 3. Указываем количество одновременных попыток отправить сообщения.

Здесь вы можете указать максимальное количество одновременных попыток обработать и отправить находящиеся в очереди письма, т.е. сколько писем будет одновременно отправлено за один раз. Например, если у вас есть сервер, который в основном занимается отправкой почтовых сообщений (как listserv, например), то вы можете обрабатывать сообщения на много быстрее, указав большее число Mail Delivery Threads.

Настройка Mail Delivery Threads полностью независима от настройки Simultaneous Requests, с которой вы возможно "встречались" в разделе "Settings" Административного модюля ColdFusion. Попытки доставить письма создаются тогда, когда запущен механизм поочередного отправления писем, и автоматически уничтожаются, когда задач на обработку почтовых сообщений нет.

Для начала можно смело указать количество попыток от 10 до 20. Вы можете повысить это значение, если уверены в том, что тот SMTP сервер, с которым ColdFusion соединяется для обработки писем, может поддерживать больше одновременных соединений.

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

С помощью ColdFusion MX 6.1 вы можете указывать, где хранить находящиеся в очереди на обработку и отправку сообщения: в памяти или на диске, как показано на Рисунке 4. Хранение в памяти быстрее, но хранение на диске подразумевает, что неотправленные сообщения существуют после перезагрузки сервера.

В ColdFusion MX 6.1 вы можете указывать место, где будут храниться письма, находящиеся в очереди на отправку
Рисунок 4. В ColdFusion MX 6.1 вы можете указывать место, где будут храниться письма, находящиеся в очереди на отправку.

Отключение этой опции заставляет ColdFusion MX 6.1 пытаться отправить письмо в течении обработки страницы, что вообще-то не рекомендуется. Это значит, что все ошибки, возникшие в процессе обработки почты, будут показаны в браузере пользователю и ваша страница не будет обработана до тех пор, пока почта не будет передана SMTP серверу, замедляя ваше приложение.

 

Время подготовки писем к обработке в ColdFusion MX 6.1

Также как и в предыдущих версиях ColdFusion, ColdFusion MX 6.1 позволяет в Административном модуле управлять временем подготовки писем к обработке. Т.е. сообщения будто бы накручиваются на один барабан, а потом по-очереди обрабатываются.

Так называемый барабан с накрученными на него почтовыми сообщениями дает команды одновременно отправлять каждые 10 сообщений (количество 10 мы указали в Mail Delivery Threads). Это означает, что если у вас в очереди 20 сообщений, то будет вызвано 2 попытки к их отправке. Во время работы этого барабана не может быть вызвано дополнительных попыток отправки сообщения. По этой причине, вам не нужно устанавливать маленькое значение времени подготовки писем к обработке, если вы обрабатываете большое количество писем в определенное время (например, осуществляете рассылку новостей или обновлений для пользователей). Иначе весь процесс обработки писем может быть медленнее, чем хотелось бы. Почему? Предположим, что вы установили время подготовки писем к обработке в 1 или 2 секунды и начали процесс обработки большого количества сообщений. Когда запускается барабан (после 1 или 2-х секунд), то в это время на нем будет накручено только 20-30 сообщений. Это значит, что во время одного запуска цикла работы барабана, будут осуществлены только 2-3 попытки отправления сообщения. Если у вас более 20-30 сообщений, то через те же 1-2 секунды будет запущен еще один барабан, что и замедляет весь процесс обработки писем.

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

 

Заключение

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

Как разработчик вы обнаружите, что ColdFusion MX 6.1 избавлен от тех ограничений, которые вы испытывали раньше при работе с почтой в ColdFusion приложениях.

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


Источник: http://www.macromedia.com/devnet/mx/coldfusion/articles/mail_61.html
Перевод: Пушкарев В.А. для www.cfug.ru

 


Hosted by uCoz