Переход:  Учетные записи > Настройки учетной записи > Автоответчики >

Создание скриптов автоответчика

Печать этого раздела Пред. страницаК началу разделаCлед. страница

Скрипты автоответчика представляют собой текстовые файлы, в которых определяется содержание сообщения, отправляемого по результатам обработки события автоответа. Эти скрипты (или сценарии) составляются в виде обычных текстовых файлов формата 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%.

См. также: