Язык @-формул в LotusDomino R 6.

Функции для работы с почтой


@MailSend

@MailSend( "кому"; "копия"; "слепая_копия"; "тема"; "заметка"; "список_имен_полей"; [список_флагов] )

Область применения: нельзя использовать в формулах отбора, колонок, видимости объекта, заголовка окна и всплывающих окон. Не работает при установке переменной окружения NoExternalApps равной 1. В Web-приложениях не работают флаги [Encrypt] и [Sign]..

@MailSend в варианте без параметров отправляет текущий документ получателю, указанному в поле SendTo (кому) документа. Для этого требуется наличие в документе поля SendTo. Документ может содержать еще одно или несколько полей, имеющих отношение к почте. Если документ содержит поля СopyTo (копия) или BlindCopyTo ("слепая" копия), то он отправляется также получателям, указанным в этих полях. Если документ содержит поля DeliveryPriority, DeliveryReport или ReturnReceipt, они используются для управления приоритетом доставки, возвратом уведомления о доставке и уведомления о прочтении. Если документ не содержит этих полей, по умолчанию будет установлен нормальный приоритет и отсутствие уведомлений.

@MailSend (без параметров) наиболее удобна для реализации пересылки документа из произвольной базы в другую произвольную базу. При этом база-получатель должна быть базой, способной получать почту (для нее в общей адресной книге должен быть создан документ MailIn - Database).

Если указан один или более параметров, @MailSend создает новое почтовое сообщение, основываясь на информации из списка параметров, и отправляет его получателям, указанным параметрами "кому", "копия", "слепая_копия". Все параметры, кроме "кому", являются дополнительными и могут быть пропущены или заменены пустой строкой "".

Параметры "кому", "копия", "слепая_копия" определяют первичных получателей, получателей копии и "слепой" копии. Эти параметры являются текстовыми списками: можно указать имена полей, содержащих адреса получателей, или явно задать списки имен получателей.


Параметр "тема" дает значение для поля Subject в создаваемом почтовом сообщении. Заданное Вами значение параметра будет отображаться в колонке Subject папки почтовой базы получателя. Этот параметр является текстовой строкой: можно указать как имя поля, содержащего краткую информацию о сообщении, так и саму эту информацию, как текстовую строку.

Параметр "заметка" задает текст, вставляемый в самое начало тела сообщения (поля Body). Этот параметр является текстовой строкой.

Параметр "список_имен_полей" задает список имен полей, информация из которых должна выбираться функцией и добавляться в тело создаваемого сообщения (в поле Body) вслед за "заметкой". Порядок добавления информации в тело сообщения совпадает с порядком задания имен полей в списке. Имена полей в списке, если они не находятся в переменной, должны заключаться в кавычки.

Если в документе присутствуют Rich Text поля, то перед отправкой их значений по почте документ должен быть сохранен. В документации про Rich Text поля в контексте функции @MailSend еще сказано, что при использовании ее с параметрами только одно Rich Text поле может быть использовано в рамках аргумента список_имен_полей, и только в агенте. Из опыта можно сказать, что такую конструкцию можно использовать не только в агенте (например, в формуле кнопки, но предварительно сохранить документ), и Rich Text полей в список_имен_полей может быть больше одного, только в этом случае из второго и последующих в письмо передается только информация plain text.

И, наконец, последним параметром можно указать список необходимых флагов, например: [Sign]: [PriorityHigh]: [ReturnReceipt] или [IncludeDocLink]. Ниже дан перечень доступных флагов:

  • [Sign] - сообщение должно быть "подписано". Если флаг не указан, сообщение не будет подписано;




  • [Encrypt] - тело сообщения должно быть зашифровано открытым ключом получателя (так что только получатель с соответствующим секретным ключом может прочитать тело сообщения). Если флаг не указан, тело сообщения не шифруется;




  • [PriorityHigh] - сообщение должно иметь высокий приоритет доставки;


  • [PriorityNormal] - сообщение должно иметь нормальный (средний) приоритет доставки;


  • [PriorityLow] - сообщение должно иметь низкий приоритет доставки. Вы должны выбрать один из трех возможных флагов приоритета. Если не указан ни один из флагов приоритета, сообщение будет иметь средний приоритет;


  • [ReturnReceipt] - в момент прочтения каждым получателем этого сообщения на адрес отправителя автоматически должно высылаться уведомление о прочтении. Если не указать этот флаг, уведомление не будут высылаться;


  • [DeliveryReportConfirmed] - в момент доставки сообщения в почтовый ящик получателя на адрес отправителя, автоматически должно высылаться уведомление о доставке. Если флаг не указан, отправитель не получает уведомление о доставке, когда сообщение было доставлено, но будет получить уведомление о недоставке, если сообщение не было доставлено;


  • [IncludeDocLink] - требует добавить в тело сообщения ссылку (Doclink) на документ, который был открыт или выбран во время выполнения функции @MailSend. Если флаг не указан, никаких ссылок в тело сообщения не вставляется. Перед применением этого флага следует не зыбывать сохранить документ, иначе ссылка может вести в «никуда».


  • Относительно применения функции @MailSend в Web-приложениях информация достаточно противоречива. В документе о самой функции @MailSend в контексте Web упоминается только про флаги [SIGN] и [ENCRYPT], которые в Web соответственно не работают, однако в документе «Domino @functions that are not supported on the Web» (@-функции не поддерживаемые в Web-приложениях) @MailSend упомянута как функция, не поддерживаемая в Web-приложениях. Из опыта можно сказать, что @MailSend в R 6 работает в Web-приложениях при условии поднятия у БД флага: Web Access: Use JavaScript when generation pages. В этом случае по умолчанию (т.е. без использования поля Principal) письмо отправляется за подписью сервера.

    Пример 1. В форме имеется поле SendTo и ряд других "проблемно-ориентированных" полей. В документе, созданном по этой форме, в поле SendTo заносится адрес базы, способной получать почту, например, "Mail Report's Database". Кнопка акции вида запускает агент, работающий по отмеченным документам. Этот агент отправляет почтой все отмеченные в виде документы в базу с адресом "Mail Report's Database". В документах, "пришедших почтой в Report's Database", будут содержаться все те поля, которые были в отправленных документах, плюс еще несколько предопределенных полей, содержащих информацию о самом процессе доставки. А вот и полный текст этого агента.



    @MailSend

    Пример 2. Отправляет сообщение Vladimir A. Panov/InterTrustCorp/SU и "слепую копию" Nikolay N. Iontsev/InterTrustCorp/SU. Сообщение называется "Отчет" и содержит фразу "Прошу извинить за задержку", а также содержимое полей STATUS и PLANS из текущего документа. Сообщение будет отправлено со следующими опциями: подпись, уведомление о доставке и уведомление о вручении (о прочтении каждым пользователем). Параметр "копия" не используется и заменен пустой строкой, т.к. за ним следуют другие параметры.

    @MailSend(

       "Vladimir A. Panov/InterTrustCorp/SU";

       "";

       "Nikolay N. Iontsev/InterTrustCorp/SU";

       "Отчет";  "Прошу извинить за задержку";

       "STATUS" : "PLANS";

       [Sign] : [DeliveryReportConfirmed] : [ReturnReceipt])

    Пример 3. Отправляет сообщение двум получателям. Для параметра "тема" использован текст из поля TOPIC, а текст сообщения берется из поля COMMENTS текущего документа (открытого в рабочем пространстве отправителя или обрабатываемого агентом). Параметры "копия", "слепая копия" и "заметка" пропущены и заменены пустой строкой, т.к. за ним следуют другие параметры. Флаги пропущены, но, поскольку после них нет других параметров, не требуется заменять их пустой строкой. Подобный вариант @MailSend особенно удобно использовать в фоновых агентах как средство автоматической отправки почты с заданным интервалом, например, напоминаний о предстоящем собрании.

    @MailSend(

       "Nikolay N. Iontsev/InterTrustCorp/SU":

       "Vladimir A. Panov/InterTrustCorp/SU";

       ""; "";

       TOPIC; "";

       "COMMENTS")

    Пример 4. Сохраняет документ и отправляет его по почте одному получателю. Получатель обнаружит в поле темы сообщения текст "Ознакомьтесь с этим документом", а в поле тела сообщения ссылку на этот документ. Когда получатель выполнит двойной щелчок мышью "по ссылке на документ", Domino предпримет попытку открыть этот документ. Успех попытки будет зависеть от доступности со станции получателя базы, содержащей документ.



    @Command( [FileSave] );

    @MailSend(

       "Andre A. Linev/InterTrustCorp/SU"; ""; "";

       "Ознакомьтесь с этим документом"; ""; ""; [IncludeDocLink] )

    @OptimizeMailAddress( "почтовый_адрес" )

    Область применения: нельзя использовать в формулах отбора, колонок, заголовка окна и формы.

    Функция удаляет из "почтового_адреса"

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

    Пример. Возвращает "Evgeny V Polyakov/ITDept/Technic/Center_TV/RU@Center_TV"

    @OptimizeMailAddress( "Evgeny V Polyakov/ITDept/Technic/Center_TV/RU@Center_TV@Mosfilm@Center_TV" )

    @ValidateInternetAddress( [флаг];

                                                     "почтовый_адрес" )

    Область применения: В DOMINO R 6.0.1 НЕ ДОКУМЕНТИРОВАНА.. Работает в формулах проверки значения полей и в формулах вычисляемых полей.

    Функция проверяет "почтовый_адрес"

    на соответствие его стандартам RFC 822 или RFC 821. В случае если адрес соответствует стандартам, возвращается пустая строка, в противном случае генерируется сообщение об ошибке.

    Параметр [флаг], может принимать одно из двух значений, либо [Address822] - для стандарта RFC 822, либо [Address821]

    - для стандарта RFC 821.

    Наиболее распространенные сообщения об ошибках:

    • "Invalid Input Parameter." - недопустимое значение входного параметра;


    • "Invalid LocalPart or character found." - обнаружено недопустимое значение для локальной части [Local Part] (часть адреса до домена) адреса по формату RFC822, или недопустимый символ;


    • "Invalid or missing Domain." - недопустимый формат для домена или он пропущен;


    • "Invalid RFC821 syntax, no Phrase required." - недопустимый формат адреса по формату RFC821, часть [Phrase Part]

      (часть адреса собственно до адреса по формату RFC822) не должна присутствовать;


    • "Invalid Phrase or character found." - недопустимое значение для [Phrase Part] части адреса или недопустимый символ;


    • "Invalid Quoted String or mismatched quotes found." - недопустимая строка в кавычках, или смешение типов кавычек;


    • "Invalid comment or mismatched parenthesis found." - недопустимые встроенные комментарии, или строка в скобках.


    • Обратите ВНИМАНИЕ!!!, что многобайтовая кодировка символов (или символы с кодами свыше 128) допускаются только в PHRASE части адреса в формате RFC 822. Так же не поддерживается синтаксис, когда несколько адресов объединены в группу (например, Customer).

      Пример 1. Возвращает пустую строку.

      @ValidateInternetAddress( [Address821]; "epolyako@centertv.ru" )

      Пример 2. Возвращает сообщение об ошибке "Invalid or Missing Domain.", если в поле From содержится значение "Alexander M. Sizov" <samo@.safe.inkom.ru>

      @ValidateInternetAddress( [Address822]; From )


      Содержание раздела