Como adicionar uma exclusão de responsabilidade a mensagens SMTP a enviar no Visual Basic

Este artigo poderá conter hiperligações para conteúdo em inglês (ainda não traduzido).

Para obter uma versão deste artigo referente ao Microsoft Visual Basic Scripting Edition, consulte 317680 .


INTRODUÇÃO

Este artigo passo a passo descreve como utilizar um receptor de eventos de transporte de SMTP para adicionar uma exclusão de responsabilidade a mensagens de correio SMTP a enviar.

Criar o receptor de eventos

  1. Crie uma nova DLL de ActiveX do Microsoft Visual Basic. Atribua o nome SMTPEventSink ao projecto e Disclaimer ao módulo.
  2. Em Project References, adicione Microsoft CDO for Exchange 2000 Library e adicione Server Extension Objects COM Library.
  3. Cole o seguinte código no módulo:
    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. Substitua o texto de exemplo de exclusão de responsabilidade pelo seu próprio texto e compile a DLL.

Registar o receptor de eventos

Para registar o receptor de eventos, utilize o ficheiro Smtpreg.vbs instalado com o Exchange Software Development Kit (SDK).
  1. Numa linha de comandos, localize a pasta \Exchange SDK\SDK\Support\CDO\Scripts e escreva o seguinte: cscript smtpreg.vbs /add 1 OnArrival SMTPDisclaimer SMTPEventSink.Disclaimer "mail from=*@seu-domínio.com"

    Se este comando tiver êxito, receberá uma mensagem de êxito gerada pelo script.
  2. Para anular o registo deste evento, escreva o seguinte: cscript smtpreg.vbs /remove 1 OnArrival SMTPDisclaimer
Para obter informações adicionais sobre como gerir ligações de eventos, visite o seguinte Web site da MSDN (Microsoft Developer Network):

Testar o receptor de eventos

Para testar o receptor de eventos, envie uma mensagem de correio electrónico para um destinatário SMTP externo à organização. O destinatário recebe uma mensagem modificada com o texto de exclusão de responsabilidade adicionado ao final da mensagem.

Nota: se utilizar um cliente MAPI, como o Microsoft Outlook, para enviar a mensagem de correio electrónico, o destinatário não recebe a mensagem de correio electrónico modificada. Isto acontece porque a mensagem de correio electrónico submetida através de MAPI não tem um formato de SMTP quando a mensagem de correio electrónico acciona o evento de transporte de SMTP. Assim, as alterações efectuadas pelo código do evento não são permanentes.

Referências

Para obter informações adicionais, clique no número de artigo que se segue para visualizar o artigo na base de dados de conhecimento da Microsoft (KB, Microsoft Knowledge Base):

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

Propriedades

ID do Artigo: 317327 - Última Revisão: 18/01/2008 - Revisão: 1

Comentários