Отправка электронной почты из программы

Материал из GedeminWiki
(Различия между версиями)
Перейти к: навигация, поиск
(Справочник почтовых серверов)
 
(не показаны 4 промежуточные версии 1 участника)
Строка 1: Строка 1:
Отправить электронную почту из программы можно с помощью встроенных функций платформы или используя внешние COM-объекты. Последний случай рассмотрен отдельно, см. [[Отправка электронной почты с использованием Collaboration Data Objects (CDO)]]. Ниже представлены возможности глобального объекта [[http://gsbelarus.com/gs/wiki/index.php/Gedemin_TLB.IgdWebClientControl|WebClientControl]].
+
Отправить электронную почту из программы можно с помощью встроенных функций платформы или используя внешние COM-объекты. Последний случай рассмотрен отдельно, см. [[Отправка электронной почты с использованием Collaboration Data Objects (CDO)]]. Ниже представлены возможности глобального объекта [[Gedemin_TLB.IgdWebClientControl|WebClientControl]].
  
 +
===Отправка сообщения из макроса (скрипт-функции)===
 +
 +
Функция [[Gedemin TLB.IgdWebClientControl.SendEmail|WebClientControl.SendEMail]] позволяет задать все параметры отправки непосредственно в момент вызова:
 +
 +
<syntaxhighlight lang="vbnet">
 +
Option Explicit
 +
Sub SendEmail
 +
 +
  WebClientControl.SendEMail _
 +
    "SMTP сервер", номер_порта, "SSLV3", _
 +
    "логин", "пароль", _
 +
    "ящик с которого идет отправка", "кому", _
 +
    "Hello!", "This is a message", _
 +
    "", False, False, True, 0, 0
 +
 +
  If WebClientControl.EmailErrorMsg = "" Then
 +
    MsgBox "Сообщение отослано"
 +
  Else
 +
    MsgBox "Ошибка: " &  WebClientControl.EmailErrorMsg
 +
  End If
 +
   
 +
End Sub
 +
</syntaxhighlight>
 +
 +
Обратите внимание, что отправка может быть синхронной, программа останавливается и ждет завершения операции, или асинхронной -- выполнение продолжается, в то время, как сообщение отсылается в фоновом потоке.
 +
 +
К сообщению могут быть прикреплены один или несколько файлов. Параметры WipeFile и WipeDir определяют что произойдет с файлами и папкой, где они находятся, после отправки сообщения: будут ли они удалены или сохранены.
 +
 +
===Справочник почтовых серверов===
 +
 +
Вместо того, чтобы каждый раз прописывать данные почтового сервера в параметрах вызова функции, можно воспользоваться справочником, который находится в Исследователе, в разделе Сервис - Почтовые сервера.
 +
 +
Список почтовых серверов хранится в базе данных в таблице [[GD_SMTP]]. Функция [[Gedemin TLB.IgdWebClientControl.SendEmail2|SendEmail2]] принимает на вход ИД записи из GD_SMTP.
 +
 +
<syntaxhighlight lang="vbnet">
 +
Option Explicit
 +
Sub SendEmail
 +
 +
  WebClientControl.SendEMail2 _
 +
    gdcBaseManager.GetIDByRUIDString(РУИД записи из таблицы GD_SMTP), _
 +
    "кому", _
 +
    "Hello!", "This is a message", _
 +
    "", False, False, True, 0, 0
 +
 +
  If WebClientControl.EmailErrorMsg = "" Then
 +
    MsgBox "Сообщение отослано"
 +
  Else
 +
    MsgBox "Ошибка: " &  WebClientControl.EmailErrorMsg
 +
  End If
 +
   
 +
End Sub
 +
</syntaxhighlight>
 +
 +
Если на вход передать 0, то параметры сервера будут взяты из записи, помеченной флагом '''Основной'''.
 +
 +
===Сервер по-умолчанию из файла gedemin.ini===
 +
 +
Если несколько баз используют один и тот же почтовый сервер, удобно прописать его параметры в файле [[gedemin.ini]], в разделе WEB CLIENT. В этом случае, при вызове функции SendEmail2 следует указать -1 в идентификаторе почтового сервера. Вообще, последовательность применения параметров следующая:
 +
 +
# Если указан ИД = -1, то функция попытается взять параметры SMPT сервера из файла gedemin.ini. Если их там нет, см. следующий шаг.
 +
# Ищем запись в GD_SMTP с заданным ИД. Если находим -- берем из нее параметры сервера. Если нет -- см. следующий шаг.
 +
# Ищем запись в GD_SMTP, для которой установлен флаг Основной. Если находим -- берем из нее параметры сервера. Если нет -- завершаем функцию с сообщением об ошибке.
 +
 +
===Построение и отправка отчета===
 +
 +
===Автоматическая отправка электронной почты===
  
  
 
[[Category:Школа системного администратора]]
 
[[Category:Школа системного администратора]]

Текущая версия на 14:10, 17 августа 2015

Отправить электронную почту из программы можно с помощью встроенных функций платформы или используя внешние COM-объекты. Последний случай рассмотрен отдельно, см. Отправка электронной почты с использованием Collaboration Data Objects (CDO). Ниже представлены возможности глобального объекта WebClientControl.

Содержание

[править] Отправка сообщения из макроса (скрипт-функции)

Функция WebClientControl.SendEMail позволяет задать все параметры отправки непосредственно в момент вызова:

Option Explicit
Sub SendEmail
 
   WebClientControl.SendEMail _
     "SMTP сервер", номер_порта, "SSLV3", _
     "логин", "пароль", _
     "ящик с которого идет отправка", "кому", _
     "Hello!", "This is a message", _
     "", False, False, True, 0, 0
 
   If WebClientControl.EmailErrorMsg = "" Then
     MsgBox "Сообщение отослано"
   Else
     MsgBox "Ошибка: " &  WebClientControl.EmailErrorMsg
   End If
 
End Sub

Обратите внимание, что отправка может быть синхронной, программа останавливается и ждет завершения операции, или асинхронной -- выполнение продолжается, в то время, как сообщение отсылается в фоновом потоке.

К сообщению могут быть прикреплены один или несколько файлов. Параметры WipeFile и WipeDir определяют что произойдет с файлами и папкой, где они находятся, после отправки сообщения: будут ли они удалены или сохранены.

[править] Справочник почтовых серверов

Вместо того, чтобы каждый раз прописывать данные почтового сервера в параметрах вызова функции, можно воспользоваться справочником, который находится в Исследователе, в разделе Сервис - Почтовые сервера.

Список почтовых серверов хранится в базе данных в таблице GD_SMTP. Функция SendEmail2 принимает на вход ИД записи из GD_SMTP.

Option Explicit
Sub SendEmail
 
   WebClientControl.SendEMail2 _
     gdcBaseManager.GetIDByRUIDString(РУИД записи из таблицы GD_SMTP), _
     "кому", _
     "Hello!", "This is a message", _
     "", False, False, True, 0, 0
 
   If WebClientControl.EmailErrorMsg = "" Then
     MsgBox "Сообщение отослано"
   Else
     MsgBox "Ошибка: " &  WebClientControl.EmailErrorMsg
   End If
 
End Sub

Если на вход передать 0, то параметры сервера будут взяты из записи, помеченной флагом Основной.

[править] Сервер по-умолчанию из файла gedemin.ini

Если несколько баз используют один и тот же почтовый сервер, удобно прописать его параметры в файле gedemin.ini, в разделе WEB CLIENT. В этом случае, при вызове функции SendEmail2 следует указать -1 в идентификаторе почтового сервера. Вообще, последовательность применения параметров следующая:

  1. Если указан ИД = -1, то функция попытается взять параметры SMPT сервера из файла gedemin.ini. Если их там нет, см. следующий шаг.
  2. Ищем запись в GD_SMTP с заданным ИД. Если находим -- берем из нее параметры сервера. Если нет -- см. следующий шаг.
  3. Ищем запись в GD_SMTP, для которой установлен флаг Основной. Если находим -- берем из нее параметры сервера. Если нет -- завершаем функцию с сообщением об ошибке.

[править] Построение и отправка отчета

[править] Автоматическая отправка электронной почты

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты