Отправка электронной почты из программы
SYSDBA (обсуждение | вклад) |
SYSDBA (обсуждение | вклад) (→Справочник почтовых серверов) |
||
| (не показаны 3 промежуточные версии 1 участника) | |||
| Строка 1: | Строка 1: | ||
Отправить электронную почту из программы можно с помощью встроенных функций платформы или используя внешние COM-объекты. Последний случай рассмотрен отдельно, см. [[Отправка электронной почты с использованием Collaboration Data Objects (CDO)]]. Ниже представлены возможности глобального объекта [[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, то функция попытается взять параметры SMPT сервера из файла gedemin.ini. Если их там нет, см. следующий шаг.
- Ищем запись в GD_SMTP с заданным ИД. Если находим -- берем из нее параметры сервера. Если нет -- см. следующий шаг.
- Ищем запись в GD_SMTP, для которой установлен флаг Основной. Если находим -- берем из нее параметры сервера. Если нет -- завершаем функцию с сообщением об ошибке.