Displaying HTML-formatted messages (Part 1)
Quickly display e-mail with inline pictures
Summary: Discusses displaying
HTML-formatted e-mail messages using ASP, including handling embedded (inline)
objects.
Tutorial map:
Part 1 - Quickly display e-mail with inline pictures
Part 2 - Using temporary filenames for
embedded objects
Part 3 - Removing temporary files after
use
Part 4 - Advanced topics
HTML messages often contain embedded pictures, sounds, scripts, style-sheets,
etc. Usually HTML message refers them by URLs but quite often these objects
are just attached to the message (they called inline objects). In order to correctly
render HTML content, these objects must be saved to disk first.
GetBodyWithEmbeddedObjectsEx method of MailBee.Message object
saves the message's embedded objects into temporary location (by default, the
current user's temporary folder) and modifies URLs of these objects in HTML
source to match their new locations. GetBodyWithEmbeddedObjectsEx returns
modified HTML body text, original Message.BodyText property value is
not affected.
GetBodyWithEmbeddedObjectsEx method takes into account the fact that
files are saved under physical path (e.g. "c:\inetpub\wwwroot\test\data"),
but correponding URL looks like "http://www.server.com/test/data",
i.e. some physical path must be mapped to corresponding virtual path in order
to be visible to the clients accessing the site.
GetBodyWithEmbeddedObjectsEx method supports several physical-to-virtual
path mappings. DIRECT mode is the simplest case: some physical root is
mapped to corresponding virtual root, and physical paths relative to physical
root directly repeat virtual paths relative to virtual root. I.e. "c:\inetpub\wwwroot\test\data\dir1\picture.gif"
is mapped into "http://www.server.com/test/data/dir1/picture.gif".
TempDirectoryPath parameter sets physical path to the location where
temporary files will be stored.
VirtualPath parameter is a virtual path to the location specified by
TempDirectoryPath physical path.
PathBuildingMode parameter sets physical-to-virtual mapping mode. To
enable DIRECT mode, set PathBuildingMode=1.
Rest of parameters are not important for now, so leave them with the default
values.
Note: TempDirectoryPath folder must have
full-control permissions for the IIS account MailBee is running on (usually
IUSR_<YOUR_SERVER_NAME>).
The code below prints HTML message to the user, saving all necessary files into
physical location "c:\test_project\files" accessible from the web
as "http://www.server.com/test/files"
Code example:
Dim objPOP3, objMsg
Set objPOP3 = Server.CreateObject("MailBee.POP3")
objPOP3.LicenseKey = "put your license key here"
' Connect to POP3 server
If objPOP3.Connect("mail.server.com", 110, "user", "pass") Then
' Mailbox not empty?
If objPOP3.MessageCount > 0 Then
' Get a message
Set objMsg = objPOP3.RetrieveSingleMessage(1)
' Save embedded images and display message body
Response.Write _
objMsg.GetBodyWithEmbeddedObjectsEx("c:\test_project\files", _
"http://www.server.com/test/files", , 1)
End If
objPOP3.Disconnect
Else
Response.Write objPOP3.ErrDesc
End If
See Also:
Part
2 (Using temporary filenames for embedded objects)
GetBodyWithEmbeddedObjectsEx
Method
Copyright © 2002-2024, AfterLogic Corporation. All rights reserved.