Добавление отказа к исходящим сообщениям 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 String
    Dim HTMLDisclaimer As String

    Implements IEventIsCacheable
    Implements CDO.ISMTPOnArrival

    Private Sub IEventIsCacheable_IsCacheable()
    'Just returns S_OK.
    End Sub

    Private 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 Sub

    Private 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 = cdoRunNextSink
    End 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 — последний просмотр: 16 янв. 2008 г. — редакция: 1

Отзывы и предложения