How to add a disclaimer to outgoing SMTP messages in Visual Basic (317327)
The information in this article applies to:
- Microsoft Exchange Server 2003 Standard Edition
- Microsoft Exchange Server 2003 Enterprise Edition
- Microsoft Exchange 2000 Server
- Collaboration Data Objects for Exchange 2000
- Microsoft Collaboration Data Objects for Windows 2000, when used with:
- the operating system: Microsoft Windows Server 2003
- the operating system: Microsoft Windows 2000
This article was previously published under Q317327
For a Microsoft Visual Basic Scripting Edition version of this article, see 317680.
INTRODUCTIONThis step-by-step article describes how to use an SMTP
transport event sink to add a disclaimer to outgoing SMTP e-mail
messages. Create the event sink- Create a new Microsoft Visual Basic ActiveX DLL. Name the
project SMTPEventSink, and then name the module Disclaimer.
- Under Project References, add Microsoft CDO for Exchange 2000 Library, and then add Server Extension Objects COM Library.
- Put the following code in the module:
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
- Replace the sample disclaimer text with your own disclaimer text, and then
build the DLL.
Register the event sink To register the event sink, use the Smtpreg.vbs file that
is installed with the Exchange software development kit (SDK). - At a command prompt, locate the
\Exchange SDK\SDK\Support\CDO\Scripts folder, and then type the following: cscript smtpreg.vbs /add 1 OnArrival SMTPDisclaimer SMTPEventSink.Disclaimer "mail from=*@your-domain-here.com"
If this command succeeds, you receive a success
message that is generated by the script. - To unregister this event,
type the following: cscript smtpreg.vbs /remove 1 OnArrival SMTPDisclaimer
For additional information about managing event bindings, visit the following Microsoft Developer Network (MSDN) Web
site: Test the event sinkTo test the event sink, send an e-mail message to an SMTP recipient
who is external to your organization. The recipient receives a modified
message with the disclaimer text added to the end of the message. Note If you use a MAPI client, such as Microsoft Outlook, to send the
e-mail message, the recipient does not receive a modified e-mail message. This is because
the e-mail message that is submitted by using MAPI is not in an SMTP format when the e-mail message triggers
the SMTP transport event. Therefore, changes that are made by the code of the event are not persisted. REFERENCES
For additional information, click the following article number to view the article in the Microsoft Knowledge Base:
273233
Cannot change MAPI message contents in a CDO SMTP event sink
Modification Type: | Minor | Last Reviewed: | 4/12/2006 |
---|
Keywords: | kbHOWTOmaster KB317327 kbAudDeveloper |
---|
|