Dodawanie zastrzeżenia do wychodzących wiadomości SMTP w języku Visual Basic

Wersja tego artykułu dla programu Misrosoft Visual Basic .NET: 317680 .

WPROWADZENIE

W tym artykule opisano krok po kroku, jak dodawać zastrzeżenia do wychodzących wiadomości e-mail protokołu SMTP za pomocą modelu event sink protokołu SMTP.

Tworzenie modelu event sink

  1. Utwórz nową bibliotekę ActiveX DLL języka Microsoft Visual Basic. Nadaj projektowi nazwę SMTPEventSink, a modułowi Disclaimer.
  2. W obszarze Project References dodaj pozycję Microsoft CDO for Exchange 2000 Library, a następnie pozycję Server Extension Objects COM Library.
  3. Dodaj następujący kod do modułu:
    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: Zastąp przykładowy tekst zastrzeżenia własnym tekstem.
    TextDisclaimer = vbCrLf & "DISCLAIMER:" & vbCrLf & "Przykładowy tekst zastrzeżenia."
    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 szPartI As String
    Dim pos As Integer

    'Wyszukiwanie taga "</body>" i wstawienie zastrzeżenia przed tagiem.
    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

    'Zatwierdzenie zmian zawartości w obiekcie transportowym ADO Stream.
    Msg.DataSource.Save
    EventStatus = cdoRunNextSink
    End Sub
  4. Zastąp przykładowy tekst zastrzeżenia własnym tekstem i skonstruuj bibliotekę DLL.

Rejestrowanie modelu event sink

Aby zarejestrować model event sink, użyj pliku Smtpreg.vbs, który jest instalowany razem z zestawem Exchange SDK.
  1. W wierszu polecenia zlokalizuj folder \Exchange SDK\SDK\Support\CDO\Scripts folder i wpisz: cscript smtpreg.vbs /add 1 OnArrival SMTPDisclaimer SMTPEventSink.Disclaimer "mail from=*@your-domain-here.com"

    Jeśli polecenie zostanie wykonane pomyślnie, skrypt wygeneruje komunikat o powodzeniu.
  2. Aby wyrejestrować to zdarzenie, wpisz następujący kod: cscript smtpreg.vbs /remove 1 OnArrival SMTPDisclaimer
Aby uzyskać dodatkowe informacje dotyczące zarządzania powiązaniami wydarzeń, odwiedź następującą witrynę Microsoft Developer Network (MSDN) w sieci Web:

Testowanie modelu event sink

Aby przetestować model event sink, wyślij wiadomość e-mail do odbiorcy używającego protokołu SMTP spoza organizacji. Odbiorca powinien otrzymać wiadomość zmodyfikowaną, tj. zawierającą na końcu dodane zastrzeżenie.

Uwaga: Jeśli wiadomość e-mail zostanie wysłana za pomocą klienckiego interfejsu MAPI, na przykład programu Microsoft Outlook, odbiorca nie otrzyma wiadomości zmodyfikowanej. Stanie się tak, ponieważ w momencie wywoływania zdarzenia transportu protokołu SMTP wiadomości e-mail przesyłane za pomocą interfejsu MAPI nie mają formatu protokołu SMTP. Z tego powodu zmiany wprowadzone przez kod zdarzenia nie są zachowywane.

Materiały referencyjne

Aby uzyskać dodatkowe informacje, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

273233 Cannot change MAPI message contents in a CDO SMTP event sink

Właściwości

Identyfikator artykułu: 317327 — ostatni przegląd: 16.01.2008 — zmiana: 1

Opinia