Добавление отказа к исходящим сообщениям SMTP с помощью Visual Basic

Эта статья помещена в архив. Она предлагается "как есть" и обновляться не будет.
Введение
В данной статье содержатся подробные указания по использованию обработчика событий протокола SMTP для добавления отказа к исходящим электронным сообщениям SMTP.

К началу статьи

Создание обработчика событий

  1. Создайте новую библиотеку Microsoft Visual Basic ActiveX DLL. Задайте для проекта имя SMTPEventSink, а для модуля — имя Disclaimer.
  2. В разделе Project References добавьте библиотеки Microsoft CDO for Exchange 2000 Library и Server Extension Objects COM Library.
  3. Введите в модуле следующий код:
    Dim TextDisclaimer As StringDim HTMLDisclaimer As StringImplements IEventIsCacheableImplements CDO.ISMTPOnArrivalPrivate Sub IEventIsCacheable_IsCacheable()    'Just returns S_OK.End SubPrivate Sub Class_Initialize()  'TODO: Replace the sample disclaimer text with your own text.  TextDisclaimer = vbCrLf & "DISCLAIMER:" & vbCrLf & "Sample Disclaimer Text."  HTMLDisclaimer = "<p></p><p>DISCLAIMER:<br>Sample Disclaimer Text"End SubPrivate Sub ISMTPOnArrival_OnArrival(ByVal Msg As CDO.IMessage, EventStatus As CDO.CdoEventStatus)    If Msg.HTMLBody <> "" Then        Dim szPartI As String        Dim szPartII As String        Dim pos As Integer                'Search for the "</body>" tag and insert the disclaimer before that tag.        pos = InStr(1, Msg.HTMLBody, "</body>", vbTextCompare)        szPartI = Left(Msg.HTMLBody, pos - 1)        szPartII = Right(Msg.HTMLBody, Len(Msg.HTMLBody) - (pos - 1))        Msg.HTMLBody = szPartI + HTMLDisclaimer + szPartII    End If    If Msg.TextBody <> "" Then        Msg.TextBody = Msg.TextBody & vbCrLf & TextDisclaimer & vbCrLf    End If        'Commit the content changes to the transport ADO Stream object.    Msg.DataSource.Save    EventStatus = cdoRunNextSinkEnd Sub					
  4. Замените образец текста отказа на свой текст отказа и соберите библиотеку DDL.
К началу статьи

Регистрация обработчика событий

Чтобы зарегистрировать обработчик событий, используйте файл Smtpreg.vbs, установленный вместе с пакетом Exchange Software Development Kit (SDK).
  1. В командной строке перейдите к папке \Exchange SDK\SDK\Support\CDO\Scripts и введите: cscript smtpreg.vbs /add 1 OnArrival SMTPDisclaimer SMTPEventSink.Disclaimer "mail from=*@your-domain-here.com"

    В случае успешного выполнения этой команды будет выведено сообщение, созданное данным сценарием.
  2. Чтобы отменить регистрацию этого события, введите: cscript smtpreg.vbs /remove 1 OnArrival SMTPDisclaimer
Дополнительные сведения об управлении привязками событий см. на веб-узле MSDN (Microsoft Developer Network) по следующему адресу:К началу статьи

Тестирование обработчика событий

Для проверки обработчика событий отправьте электронное сообщение получателю сообщений SMTP, находящемуся за пределами организации. К получателю придет измененное сообщение с текстом отказа в конце сообщения.

Примечание. При использовании для отправки электронных сообщений клиента MAPI (такого как Microsoft Outlook) получателю будет доставлено сообщение без изменений. Это связано с тем, что электронное сообщение, отправляемое с использованием MAPI, в момент срабатывания обработчика событий транспорта SMTP имеет формат, отличный от SMTP. В результате изменения, вносимые программным кодом события, не сохраняются.

К началу статьи
Ссылки
Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
273233 Не удается изменить содержание сообщения в формате MAPI в обработчике событий CDO SMTP
К началу статьи
Свойства

Номер статьи: 317327 — последний просмотр: 12/07/2015 08:51:36 — редакция: 6.5

Microsoft Exchange Server 2003 Standard Edition, Microsoft Exchange Server 2003 Enterprise Edition, Microsoft Exchange 2000 Server Standard Edition, Collaboration Data Objects for Exchange 2000, Microsoft Collaboration Data Objects 2.0

  • kbnosurvey kbarchive kbhowtomaster KB317327
Отзывы и предложения