More .NET libraries
-
Rebex Mail Pack
IMAP, MS Graph, EWS, POP3, SMTP, MIME, S/MIME, MSG
-
Rebex Total Pack
All Rebex .NET libraries together
Back to feature list...
MSG message API
On this page:
This API is provided by Rebex.Msg.dll
assembly.
Contents of Outlook MSG messages are stored in MAPI properties. See MAPI properties for more details about working with them directly.
Loading and saving messages
To load a message, use MsgMessage.Load()
method.
To save a message use MsgMessage.Save()
method.
Both methods accept path or Stream
arguments.
// create an instance of MsgMessage
var message = new MsgMessage();
// load a message from file
message.Load(@"C:\MyData\sample.msg");
// .. work with the message
// save the message into a memory stream for later use
var stream = new MemoryStream();
message.Save(stream);
stream.Position = 0;
' create an instance of MsgMessage
Dim message = New MsgMessage()
' load a message from file
message.Load("C:\MyData\sample.msg")
' .. work with the message
' save the message into a memory stream for later use
Dim stream = New MemoryStream()
message.Save(stream)
stream.Position = 0
Message subject
Message 'Subject' is accessible via MsgMessage.Subject
property.
// create an instance of MsgMessage
var message = new MsgMessage();
// set the 'Subject'
message.Subject = "Rebex MSG sample";
' create an instance of MsgMessage
Dim message = New MsgMessage()
' set the 'Subject'
message.Subject = "Rebex MSG sample"
When reading the value, content of the MsgPropertyTag.Subject
MAPI property is returned.
If it is not present, the subject is constructed from the
MsgPropertyTag.SubjectPrefix
, MsgPropertyTag.NormalizedSubject
and MsgPropertyTag.ConversationTopic
MAPI properties.
When setting the value, the following MAPI properties are updated:
MsgPropertyTag.Subject
MsgPropertyTag.SubjectPrefix
MsgPropertyTag.NormalizedSubject
MsgPropertyTag.ConversationTopic
Plain, HTML and RTF bodies
An Outlook MSG message might contain up to three representations of the message body: RTF, HTML, and plain text.
To get a value of the desired body representation, use MsgMessage.BodyRtf
,
MsgMessage.BodyHtml
, or MsgMessage.BodyText
properties.
To set the bodies, use MsgMessage.SetBody()
method.
// create an instance of MsgMessage
var message = new MsgMessage();
// set plain, HTML and RTF message bodies
string plainTextBody = "This is sample body.";
string htmlBody = "This is sample <b>HTML</b> body.";
string rtfBody = @"{\rtf1\ansi\ This is sample \b RTF\b0 body.}";
message.SetBody(plainTextBody, htmlBody, rtfBody);
// display the message bodies
Console.WriteLine("Plain text body: {0}", message.BodyText);
Console.WriteLine("HTML body: {0}", message.BodyHtml);
Console.WriteLine("RTF body: {0}", message.BodyRtf);
' create an instance of MsgMessage
Dim message = New MsgMessage()
' set plain, HTML and RTF message bodies
Dim plainTextBody As String = "This is sample body."
Dim htmlBody As String = "This is sample <b>HTML</b> body."
Dim rtfBody As String = "{\rtf1\ansi\ This is sample \b RTF\b0 body.}"
message.SetBody(plainTextBody, htmlBody, rtfBody)
' display the message bodies
Console.WriteLine("Plain text body: {0}", message.BodyText)
Console.WriteLine("HTML body: {0}", message.BodyHtml)
Console.WriteLine("RTF body: {0}", message.BodyRtf)
The following MAPI properties are set based on the specified arguments:
MsgPropertyTag.Body
MsgPropertyTag.BodyHtml
MsgPropertyTag.RtfCompressed
MsgPropertyTag.RtfInSync
From and Sender fields
The 'From' and 'Sender' addresses are accessible using the MsgMessage.From
and MsgMessage.Sender
properties.
// create an instance of MsgMessage
var message = new MsgMessage();
// specify 'From' and 'Sender' addresses:
// address with a display name specified explicitly
message.From = new MsgAddress("bob@example.com", "Bob");
// addresses in MIME address format are accepted as well
message.Sender = "Joe <joe@example.com>";
' create an instance of MsgMessage
Dim message = New MsgMessage()
' specify 'From' and 'Sender' addresses:
' address with a display name specified explicitly
message.From = New MsgAddress("bob@example.com", "Bob")
' addresses in MIME address format are accepted as well
message.Sender = "Joe <joe@example.com>"
The following MAPI properties are used for 'From' address:
MsgPropertyTag.SentRepresentingAddressType
MsgPropertyTag.SentRepresentingEmailAddress
MsgPropertyTag.SentRepresentingName
MsgPropertyTag.SentRepresentingEntryId
MsgPropertyTag.SenderAddressType
MsgPropertyTag.SenderEmailAddress
MsgPropertyTag.SenderSmtpAddress
MsgPropertyTag.SenderName
MsgPropertyTag.SenderEntryId
Recipients collection
MSG message recipients are accessible using MsgMessage.To
, MsgMessage.CC
and MsgMessage.Bcc
collections.
// create an instance of MsgMessage
var message = new MsgMessage();
message.Sender = "me@example.com";
// specify some recipients:
// display name as argument
message.To.Add("bob@example.com", "Bob");
// display name in MIME address format
message.To.Add("Joe <joe@example.com>");
// no display name (address used as a display name)
message.To.Add("tom@example.com");
// add 'Sender' to 'CC'
message.CC.Add(message.Sender);
' create an instance of MsgMessage
Dim message = New MsgMessage()
message.Sender = "me@example.com"
' specify some recipients:
' display name as argument
message.To.Add("bob@example.com", "Bob")
' display name in MIME address format
message.To.Add("Joe <joe@example.com>")
' no display name (address used as a display name)
message.To.Add("tom@example.com")
' add 'Sender' to 'CC'
message.CC.Add(message.Sender)
Working with attachments
MSG message attachments are accessible using MsgMessage.Attachments
collection.
// create an instance of MsgMessage
var message = new MsgMessage();
// add an attachment
message.Attachments.Add(@"c:\MyData\image.jpg");
// display the list of attachments
foreach (MsgAttachment attachment in message.Attachments)
{
Console.WriteLine("Attachment: {0} ({1} bytes)",
attachment.FileName,
attachment.Data.Length);
}
' create an instance of MsgMessage
Dim message = New MsgMessage()
' add an attachment
message.Attachments.Add("c:\MyData\image.jpg")
' display the list of attachments
For Each attachment As MsgAttachment In message.Attachments
Console.WriteLine("Attachment: {0} ({1} bytes)",
attachment.FileName,
attachment.Data.Length)
Next
Back to feature list...