Альтернативный способ отправки почты из DIRECTUM по протоколу SMTP 

Дмитрий Тарасов
Дата создания: 5 октября 2011 в 11:19

Все, кому доводилось отправлять почту из DIRECTUM с использованием стандартных функций и блоков типовых маршрутов, скорее всего обратили внимание, что все они работают с почтовой фабрикой IMailFactory "SBUM.MailFactory". К сожалению, данный объект не всегда подходит для реализации задач отправки почты при определенных условиях (не умеет отправлять почту с использованием SSL, кодировку можно менять только у письма в формате HTML и т.п.). По этому поводу даже уже появилась соответствующая идея: Добавление возможности работы с SSL/TLS и 64-битным Outlook в библиотеки SBUM.

Ниже предлагается альтернативный вариант отправки почты из DIRECTUM, без использования "SBUM.MailFactory", с помощью объектной модели CDO (Collaboration Data Objects): 

  SmtpServer = "msg-01"
  SmtpPort = 25
  SmtpUser = "directum"
  SmtpPass = "password"
  Attachment = "c:\temp\test.doc"
  objMessage = CreateObject("CDO.Message")
  objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
  objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = SmtpServer
  objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = SmtpPort
  objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
  objMessage.BodyPart.CharSet = "windows-1251"
  objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 // 0=None; 1=Basic; 2=NTLM
  objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = SmtpUser
  objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = SmtpPass
  objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False
  objMessage.Configuration.Fields.Update
  objMessage.Subject = "Тема письма"
  objMessage.From = Format('"%s" <%s>'; ArrayOf("User"; User@company.ru))
  objMessage.To = "User1@company.ru"
  objMessage.CC = "User2@company.ru"
  objMessage.BCC = "User3@company.ru"
  objMessage.TextBody = "Текст письма"
  objMessage.AddAttachment(Attachment)
  objMessage.Send
  objMessage = nil

 

Подробную справку по объектной модели CDO можно найти в MSDN.

К сожалению, эта библиотека работает только с протоколом SMTP и каталогом Pickup на диске. Она не умеет работать ни с протоколом POP3, ни с IMAP4, ни с MAPI, а, значит, подключиться к почтовому серверу и проверить на нем появление новых сообщений мы не сможем. Придется использовать другую библиотеку из набора CDO — Microsoft CDO 1.21 Library. Она умеет работать только с MAPI, зато она умеет выполнять различные операции в почтовом ящике на Exchange Server без всяких предупреждающих сообщений. Справку по этой библиотеке также можно найти в MSDN.

В качестве еще одной альтернативы "SBUM.MailFactory", можно воспользоваться утилитами командной строки - например, sendmail и mapisend от Microsoft или bmail.

Ниже приложен набор функций и блоков типовых маршрутов для отправки почты из DIRECTUM с использованием объектной модели CDO. Разработка велась в DIRECTUM 4.7. Пример использования одной из этих функций: 

    SendingResult = RITSMTPMailSendDialog("user1"; "user1@company.ru"; "user2@company.ru, user3@company.ru"; 
      "medved@mail.ru"; ; "Тема письма"; "Текст письма"; "c:\temp\test.doc"; ; "koi8-r"; "Да"; "Basic"; "Нет")
      
    // Определить результаты отправки письма
    if SendingResult == ''
      ShowMessage('Письмо успешно отправлено')
    else
      ShowMessage(SendingResult)
    endif

 

 

 

 

 

 

 

Пример с использованием блоков типового маршрута приводить не буду, там и так все понятно. Добавлю только, что один из двух блоков отправляет письмо с вложениями из типового маршрута (свойства блока задаются по аналогии со стандартными блоками отправки письма), а второй блок добавляет к вложениям ярлык IS-Bulder на задачу, из которой письмо отправлено. 

SMTPMail.zip (23,68 Кб)

P.S. Я не знаю почему так "перекосило" пример кода, но если его вставлять прямо в текст, картина получается еще хуже. 

 

понравилась 5 пользователям

Находится в рубриках:
Комментарии
Комментарии доступны только для зарегистрированных пользователей.




Теги
4.7 4.8 awards isbl is-builder sql server бизнес-решение введение в is-builder видео дайджест документ интеграция клик настройка отчет разработка сообщество справочник сценарий функция
показать все теги