Скрипты автоответчика представляют собой текстовые файлы, в которых определяется содержание сообщения, отправляемого по результатам обработки события автоответа. Эти скрипты (или сценарии) составляются в виде обычных текстовых файлов формата ASCII без форматирования и снабжаются расширением "*.rsp". Когда автоответчика запускает выполнение скрипта автоответчика, этот скрипт обрабатывается и проверяется на наличие макросов, которые затем заменяются на реальные данные из входящего сообщения, породившего событие автоответчика. Строки, начинающиеся символом "#", игнорируются и используются для комментариев.
Ниже приведено несколько примеров файлов со скриптами, а также несколько базовых файлов "*.rsp", помещаемых в папку \app\ в рабочей папке MDaemon.
Макросы скриптов автоответчика
$HEADERS$ |
Вместо этого макроса подставляются все заголовки входящего сообщения. Текст, предшествующий этому макросу, будет повторяться в начале каждой раскрываемой строки. |
$HEADER:XX$ |
При использовании этого макроса в сообщение будет вставлено содержимое заголовка, указанного вместо «xx». Например: Если во входящем сообщении был заголовок "TO: joe@example.com", то макрос $HEADER:TO$ будет раскрыт в "joe@example.com". Если в оригинальном сообщении был заголовок "SUBJECT: This is the subject", то макрос $HEADER:SUBJECT$ будет заменен текстом «This is the subject". |
$BODY$ |
Вместо этого макроса подставляется полный текст тела письма. Чтобы попытаться сохранить наборы символов для других языков, MDaemon будет читать тело письма, как двоичные данные, а не как текст, что позволяет точно скопировать тело письма "байт в байт". |
$BODY-AS-TEXT$ |
Как и в случае с макросом $BODY$, вместо этого макроса будет подставлен полный текст сообщения, только в виде текста, а не в двоичном виде. Текст, предшествующий этому макросу, будет повторяться в начале каждой раскрываемой строки. Таким образом, при использовании в скрипте макроса ">>$BODY-AS-TEXT$" в генерируемое сообщении будут вставлены все строки исходного письма, но каждая строка будет начинаться с символов ">>". Также можно добавить текст справа от этого макроса. |
$ATTACHMENTS$ |
Этот макрос будет заменён полным списком всех вложенных файлов, извлеченных из оригинального сообщения. Текст, предшествующий этой переменной шаблона, будет повторяться в начале каждой раскрываемой строки. Например: FILE-LIST: $ATTACHMENTS$ будет помещать имя каждого вложенного файла в генерируемое сообщение с добавлением текстовой строки "FILE-LIST:" перед каждым именем файла. |
$ATTACHMENTCOUNT$ |
Этот макрос будет заменен целочисленным значением, равным количеству вложений, извлеченных из оригинального сообщения. |
$ATTACHMENT(X)$ |
Этот макрос будет заменен именем вложенного файла с соответствующим номером, переданным в качестве параметра X. Если значение Х больше общего количества прикреплённых файлов, ничего не подставляется. |
$SENDER$ |
Этот макрос преобразуется в полный адрес электронной почты, записанный в заголовке "From:" входящего сообщения. |
$SENDERMAILBOX$ |
Этот макрос преобразуется в имя почтового ящика отправителя. Имя почтового ящика - это часть адреса электронной почты слева от символа "@". |
$SENDERDOMAIN$ |
Этот макрос преобразуется в имя домена отправителя. Доменное имя - это часть адреса электронной почты справа от символа "@". |
$RECIPIENT$ |
Этот макрос преобразуется в полный адрес получателя письма. |
$RECIPIENTMAILBOX$ |
Этот макрос преобразуется в имя почтового ящика получателя сообщения. Имя почтового ящика - это часть адреса электронной почты слева от символа "@". |
$RECIPIENTDOMAIN$ |
Этот макрос преобразуется в доменное имя получателя сообщения. Доменное имя - это часть адреса электронной почты справа от символа "@". |
$SUBJECT$ |
Этот макрос преобразуется в значение заголовка "Subject:". |
$MESSAGEID$ |
Этот макрос преобразуется в значение заголовка "Message-ID". |
$CONTENTTYPE$ |
Этот макрос преобразуется в значение заголовка "Content-Type". |
$PARTBOUNDARY$ |
Этот макрос преобразуется в значение MIME «Part-Boundary», найденное в заголовке «Content-Type» для сообщений из нескольких частей. |
$DATESTAMP$ |
Этот макрос раскрывается в строку с меткой даты-времени в стиле RFC-2822. |
$ACTUALTO$ |
Некоторые сообщения могут содержать поле «ActualTo», которое представляет почтовый ящик получателя и хост в том виде, в котором они были заданы оригинальным пользователем, до переформатирования или трансляции алиасов. Данный макрос преобразуется именно в это значение. |
$ACTUALFROM$ |
Некоторые сообщения могут содержать поле "ActualFrom", которое представляет почтовый ящик и хост источника сообщения до переформатирования или трансляции алиасов. Данный макрос преобразуется именно в это значение. |
$REPLYTO$ |
Этот макрос преобразуется в содержимое заголовка "ReplyTo". |
$PRODUCTID$ |
Этот макрос раскрывается в строку с информацией о версии MDaemon. |
Макросы замены заголовков
Перечисленные ниже макросы управляют заголовками сообщений автоответчика.
%SetSender%
пример: %SetSender%=mailbox@host.org
Во время генерации автоответа этот макрос будет заменять адрес настоящего отправителя исходного сообщения перед сборкой заголовков в сообщениях автоответчика. Данный макрос управляет содержанием заголовка TO в сообщении автоответчика. Например, если отправителем исходного сообщения был ящик "pooky@domain.com", а автоответчик получателя использовал макрос %SetSender% для замены этого адреса на "frank@example.com", то заголовок TO в сообщении автоответчика будет содержать адрес "frank@example.com".
%SetRecipient%
пример: %SetRecipient%=mailbox@host.org
Во время генерации автоответа этот макрос будет заменять адрес получателя исходного сообщения перед сборкой заголовков в сообщениях автоответчика. Данный макрос управляет содержанием заголовка FROM в сообщении автоответчика. Например, если получателем исходного сообщения был ящик "frank@example.com", а автоответчик пользователя Frank использовал макрос %SetRecipient% для замены этого адреса на "frank.thomas@example.com", то заголовок FROM в сообщении автоответчика будет содержать адрес "frank.thomas@example.com".
%SetReplyTo%
пример: %SetReplyTo%=mailbox@host.org
Управляет содержимым заголовка ReplyTo в сообщении автоответчика.
%SetActualTo%
пример: %SetActualTo%=mailbox@host.org
Устанавливает, кто будет "фактическим" ("actual") получателем данного сообщения.
%SetSubject%
пример: %SetSubject%=Текст темы
Заменяет содержание темы исходного сообщения.
%SetMessageId%
пример: %SetMessageId%=строка ID
Заменяет ID-строку сообщения.
%SetPartBoundary%
пример: %SetPartBoundary%=Строка разбиения
Изменяет границы частей составного сообщения.
%SetContentType%
пример: %SetContentType%=MIME-тип
Меняет тип содержимого сообщения на указанное значение.
%SetAttachment%
пример: %SetAttachment%=filespec
Заставляет MDaemon присоединить заданный файл к новому сгенерированному сообщению автоответчика.
Примеры скриптов автоответчика
Примерный скрипт автоответчика с несколькими макросами автоответа может называться VACATION.RSP и выглядеть примерно так:
Приветствую, $SENDER$
Ваше сообщение на тему ‘$SUBJECT$’ не будет прочитано мной, потому, что я нахожусь в отпуске. Ура!!!
Искренне ваш,
$RECIPIENT$
С помощью некоторых макросов замены заголовков вы также можете управлять заголовками, которые будут сгенерированы при обработке этого сценария автоответчика и создании ответного сообщения отправителю $SENDER$:
Приветствую, $SENDER$
Ваше сообщение на тему ‘$SUBJECT$’ не будет прочитано мной, потому, что я нахожусь в отпуске. Ура!!!
Искренне ваш,
$RECIPIENT$
%SetSubject%=RE: $SUBJECT$
%SetAttachment%=c:\photos\me_on_vaction.jpg
С помощью этого скрипта автоответа вы добавляете "RE: " в начале темы исходного сообщения и присоединяете указанный файл.
Строка "%SetSubject%=RE: $SUBJECT$" обрабатывается примерно так:
1. | Выражение $SUBJECT$ замещается текстом темы исходного сообщения. Тем самым эта строка становится эквивалентной: |
%SetSubject%=RE: Тема оригинального сообщения
2. | MDaemon замещает оригинальную тему, сохраненную в его внутреннем буфере, этим новым рассчитанным значением. Отсюда и далее выражение "$SUBJECT$" в данном скрипте будет возвращать новый результат. |
Обратите внимание на местоположение новых макросов — они перечислены внизу скрипта ответа. Это необходимо для исключения побочных эффектов. Например, если бы макрос %SetSubject% располагался перед макросом $SUBJECT$, который появляется во второй строке сценария ответа, текст темы был бы изменён при раскрытии макроса $SUBJECT$. То есть, вместо замены $SUBJECT$ содержимым оригинального заголовка «Subject:», этот макрос будет заменен значением, которое вы задали в качестве значения %SetSubject%.
См. также:
Создание скриптов автоответчика
Автоответчики » Учетные записи
Редактор учетных записей » Автоответчики