MsgReader Raised when it is not possible to remove the or from the Raised when the Microsoft Outlook message type or EML is not supported Raised when a property is invalid Raised when the Microsoft Outlook signed message is invalid Raised when it is not possible to read the from the This class can be used to calculate the differences between 2 dates in years, months, weeks, days, hours and seconds Returns the years, days, months, weeks, hours, minutes and seconds as a string. E.g. 1 year, 2 months, 3 weeks, 4 days, 5 hours, 6 minutes Calculates the difference between 2 dates in years, months, weeks, days, hours and seconds This class contains helper methods for E-mail addresses Return true when the E-mail address is valid Removes trailing en ending single quotes from an E-mail address when they exist Get the complete inner exception tree The exception object This class contains file management functions that are not available in the .NET framework The max path length in Windows Check if there is a backslash at the end of the string and if not add it Validates the length of , when this is longer then chars it will be truncated. The filename with path Optional extra truncate size, when not used the filename is truncated until it fits Raised when no path or file name is given in the Raised when it is not possible to truncate the Returns the extension of the specified string The path of the file Raised when no path is given Returns the file name of the specified string without the extension The path of the file Returns the directory information for the specified string The path of a file or directory Checks if a file already exists and if so adds a number until the file is unique The file to check When true validation will be performed on the max path lengt Raised when no path or file name is given in the Raised when it is not possible to truncate the Removes illegal filename characters Gives the size of a file in Windows format (GB, MB, KB, Bytes) Filesize in bytes This class is used as a placeholder for the filetype information The magic bytes The magic bytes as a string The file type extension that belongs to the magic bytes (e.g. doc, xls, msg) Description of the file Constructor The magic bytes The file type extension that belongs to the magic bytes (e.g. doc, xls, msg) Description of the file (e.g. Word document, Outlook message, etc...) This class can be used to recognize files by their magic bytes Contains all the magic bytes and their description Converts a string to a byte array String to convert Byte array A list with most of the used file types and their magic bytes IndexOf function for byte arrays Returns a object by looking to the magic bytes of the array. A object The bytes of the file Tries to recognize an Microsoft Office file by looking to it's internal bytes The bytes of the file Tries to recognize an Microsoft Office 2007+ file by looking to it's internal bytes The bytes of the file Strips the BOM from the magic bytes array Byte array without BOM This class contains all known mimetypes Returns the file extension for the given . An empty string is returned when the mimetype is not found. The mime type Returns the stream as an byte array Returns true when the end of the has been reached Utility to help reading bytes and strings of a Read a line from the stream. A line is interpreted as all the bytes read until a CRLF or LF is encountered.
CRLF pair or LF is not included in the string.
The stream from which the line is to be read A line read from the stream returned as a byte array or if no bytes were readable from the stream If is
Read a line from the stream. for more documentation. The stream to read from A line read from the stream or if nothing could be read from the stream If is Reads from the until a null terminated char is read Reads from the until a null terminated char is read The Reads from the until a null terminated char is read The A strongly-typed resource class, for looking up localized strings, etc. Returns the cached ResourceManager instance used by this class. Overrides the current thread's CurrentUICulture property for all resource lookups using this strongly typed resource class. Looks up a localized string similar to Attachments. Looks up a localized string similar to Categories. Looks up a localized string similar to Declined. Looks up a localized string similar to Acting as delegate for the organizer of the meeting. Looks up a localized string similar to Deleted exception with no response. Looks up a localized string similar to Deleted meeting with no response. Looks up a localized string similar to Declined. Looks up a localized string similar to Meeting status. Looks up a localized string similar to Organizer of the meeting. Looks up a localized string similar to Modified end time. Looks up a localized string similar to Modified location. Looks up a localized string similar to Modified start time. Looks up a localized string similar to Accepted. Looks up a localized string similar to Declined. Looks up a localized string similar to Exception declined. Looks up a localized string similar to Tentative. Looks up a localized string similar to End. Looks up a localized string similar to Location. Looks up a localized string similar to Mandatory participants. Looks up a localized string similar to Optional participants. Looks up a localized string similar to Organizer. Looks up a localized string similar to Daily. Looks up a localized string similar to Monthly. Looks up a localized string similar to (None). Looks up a localized string similar to Weekly. Looks up a localized string similar to Yearly. Looks up a localized string similar to Recurrence patern type. Looks up a localized string similar to Recurrence patern. Looks up a localized string similar to Resources. Looks up a localized string similar to Start. Looks up a localized string similar to Subject. Looks up a localized string similar to Assistant. Looks up a localized string similar to Assistant. Looks up a localized string similar to Pager. Looks up a localized string similar to Birthday. Looks up a localized string similar to Business fax. Looks up a localized string similar to Business 2. Looks up a localized string similar to Business. Looks up a localized string similar to Callback. Looks up a localized string similar to Car. Looks up a localized string similar to Mobile. Looks up a localized string similar to Company. Looks up a localized string similar to Company main phone. Looks up a localized string similar to MM-dd-yyyy. Looks up a localized string similar to F. Looks up a localized string similar to days. Looks up a localized string similar to day. Looks up a localized string similar to hours. Looks up a localized string similar to hour. Looks up a localized string similar to minutes. Looks up a localized string similar to minute. Looks up a localized string similar to months. Looks up a localized string similar to month. Looks up a localized string similar to seconds. Looks up a localized string similar to second. Looks up a localized string similar to weeks. Looks up a localized string similar to week. Looks up a localized string similar to years. Looks up a localized string similar to year. Looks up a localized string similar to Department. Looks up a localized string similar to Full name. Looks up a localized string similar to E-mail display as. Looks up a localized string similar to E-mail. Looks up a localized string similar to E-mail 2 display as. Looks up a localized string similar to E-mail 2. Looks up a localized string similar to E-mail 3 display as. Looks up a localized string similar to E-mail 3. Looks up a localized string similar to Attachments. Looks up a localized string similar to BCC. Looks up a localized string similar to Categories. Looks up a localized string similar to CC. Looks up a localized string similar to Completed. Looks up a localized string similar to Flag. Looks up a localized string similar to Follow up. Looks up a localized string similar to Follow up status. Looks up a localized string similar to From. Looks up a localized string similar to on behalf of. Looks up a localized string similar to Sent on. Looks up a localized string similar to Signed by. Looks up a localized string similar to on. Looks up a localized string similar to Subject. Looks up a localized string similar to To. Looks up a localized string similar to Job title. Looks up a localized string similar to First name. Looks up a localized string similar to Home address. Looks up a localized string similar to Home fax. Looks up a localized string similar to Home 2. Looks up a localized string similar to Home. Looks up a localized string similar to Web page. Looks up a localized string similar to High. Looks up a localized string similar to Urgent. Looks up a localized string similar to Low. Looks up a localized string similar to . Looks up a localized string similar to IM address. Looks up a localized string similar to ISDN. Looks up a localized string similar to Nameless. Looks up a localized string similar to Other address. Looks up a localized string similar to Other fax. Looks up a localized string similar to Other. Looks up a localized string similar to Other fax. Looks up a localized string similar to Primary phone. Looks up a localized string similar to Profession. Looks up a localized string similar to Radio. Looks up a localized string similar to Spouse/Partner. Looks up a localized string similar to Date. Looks up a localized string similar to Last name. Looks up a localized string similar to Actual work. Looks up a localized string similar to Billing information. Looks up a localized string similar to Company. Looks up a localized string similar to Contacts. Looks up a localized string similar to Completed on. Looks up a localized string similar to Due date. Looks up a localized string similar to Total work. Looks up a localized string similar to Mileage. Looks up a localized string similar to Owner. Looks up a localized string similar to Percentage complete. Looks up a localized string similar to Requested by. Looks up a localized string similar to Start date. Looks up a localized string similar to Complete. Looks up a localized string similar to In progress. Looks up a localized string similar to Status. Looks up a localized string similar to Not started. Looks up a localized string similar to Waiting. Looks up a localized string similar to Subject. Looks up a localized string similar to Telex. Looks up a localized string similar to TTY/TDD phone. Looks up a localized string similar to Anniversary. Looks up a localized string similar to Business address. Utility class for dealing with Base64 encoded strings Decodes a base64 encoded string into the bytes it describes The string to decode A byte array that the base64 string described Decodes a Base64 encoded string using a specified Source string to decode The encoding to use for the decoded byte array that describes A decoded string If or is If is not a valid base64 encoded string Utility class for dealing with encoded word strings

EncodedWord encoded strings are only in ASCII, but can embed information about characters in other character sets.

It is done by specifying the character set, an encoding that maps from ASCII to the correct bytes and the actual encoded string.

It is specified in a format that is best summarized by a BNF:
"=?" character_set "?" encoding "?" encoded-text "?="
=?ISO-8859-1?Q?=2D?= Here ISO-8859-1 is the character set.
Q is the encoding method (quoted-printable). B is also supported (Base 64).
The encoded text is the =2D part which is decoded to a space.
Decode text that is encoded with the encoding.

This method will decode any encoded-word found in the string.
All parts which is not encoded will not be touched.

From RFC 2047:
Generally, an "encoded-word" is a sequence of printable ASCII characters that begins with "=?", ends with "?=", and has two "?"s in between. It specifies a character set and an encoding method, and also includes the original text encoded as graphic ASCII characters, according to the rules for that encoding method. Example:
=?ISO-8859-1?q?this=20is=20some=20text?= other text here
See RFC 2047 section 2 "Syntax of encoded-words" for more details Source text. May be content which is not encoded. Decoded text If is
Utility class used by OpenPop for mapping from a characterSet to an .

The functionality of the class can be altered by adding mappings using and by adding a .

Given a characterSet, it will try to find the Encoding as follows: If a mapping for the characterSet was added, use the specified Encoding from there. Mappings can be added using . Try to parse the characterSet and look it up using for codepages or for named encodings. If an encoding is not found yet, use the if defined. The is user defined.
Delegate that is used when the EncodingFinder is unable to find an encoding by using the or general code.
This is used as a last resort and can be used for setting a default encoding or for finding an encoding on runtime for some .
The character set to find an encoding for. An encoding for the or if none could be found.
Last resort decoder. Mapping from charactersets to encodings. Initialize the EncodingFinder Used to reset this static class to facilite isolated unit testing. Parses a character set into an encoding. The character set to parse An encoding which corresponds to the character set If is Puts a mapping from to into the 's internal mapping Dictionary. The string that maps to the The that should be mapped from If is If is Used for decoding Quoted-Printable text.
This is a robust implementation of a Quoted-Printable decoder defined in RFC 2045 and RFC 2047.
Every measurement has been taken to conform to the RFC.
Decodes a Quoted-Printable string according to RFC 2047.
RFC 2047 is used for decoding Encoded-Word encoded strings.
Quoted-Printable encoded string Specifies which encoding the returned string will be in A decoded string in the correct encoding If or is
Decodes a Quoted-Printable string according to RFC 2045.
RFC 2045 specifies the decoding of a body encoded with Content-Transfer-Encoding of quoted-printable.
Quoted-Printable encoded string A decoded byte array that the Quoted-Printable encoded string described If is
This is the actual decoder. The string to be decoded from Quoted-Printable If , specifies that RFC 2047 quoted printable decoding is used.
This is for quoted-printable encoded words

If , specifies that RFC 2045 quoted printable decoding is used.
This is for quoted-printable Content-Transfer-Encoding A decoded byte array that was described by If is See RFC 2047 section 4.2 for RFC details
Writes all bytes in a byte array to a stream The stream to write to The bytes to write to the RFC 2045 states about robustness:
Control characters other than TAB, or CR and LF as parts of CRLF pairs, must not appear. The same is true for octets with decimal values greater than 126. If found in incoming quoted-printable data by a decoder, a robust implementation might exclude them from the decoded data and warn the user that illegal characters were discovered. Control characters are defined in RFC 2396 as
control = US-ASCII coded characters 00-1F and 7F hexadecimal
String to be stripped from illegal control characters A string with no illegal control characters If is
This method will remove any \r and \n which is not paired as \r\n String to remove lonely \r and \n's from A string without lonely \r and \n's If is RFC 2045 says that a robust implementation should handle:
An "=" cannot be the ultimate or penultimate character in an encoded object. This could be handled as in case (2) above. Case (2) is:
An "=" followed by a character that is neither a hexadecimal digit (including "abcdef") nor the CR character of a CRLF pair is illegal. This case can be the result of US-ASCII text having been included in a quoted-printable part of a message without itself having been subjected to quoted-printable encoding. A reasonable approach by a robust implementation might be to include the "=" character and the following character in the decoded data without any transformation and, if possible, indicate to the user that proper decoding was not possible at this point in the data.
The string to decode which cannot have length above or equal to 3 and must start with an equal sign. A decoded byte array If is Thrown if a the parameter has length above 2 or does not start with an equal sign.
This helper method will decode a string of the form "=XX" where X is any character.
This method will never fail, unless an argument of length not equal to three is passed.
The length 3 character that needs to be decoded A decoded byte array If is Thrown if a the parameter does not have length 3 or does not start with an equal sign.
This class is responsible for decoding parameters that has been encoded with:
Continuation
This is where a single parameter has such a long value that it could be wrapped while in transit. Instead multiple parameters is used on each line.

Example
From: Content-Type: text/html; boundary="someVeryLongStringHereWhichCouldBeWrappedInTransit"
To: Content-Type: text/html; boundary*0="someVeryLongStringHere" boundary*1="WhichCouldBeWrappedInTransit"
Encoding
Sometimes other characters then ASCII characters are needed in parameters.
The parameter is then given a different name to specify that it is encoded.

Example
From: Content-Disposition attachment; filename="specialCharsÆØÅ"
To: Content-Disposition attachment; filename*="ISO-8859-1'en-us'specialCharsC6D8C0"
This encoding is almost the same as encoding, and is used to decode the value.
Continuation and Encoding
Both Continuation and Encoding can be used on the same time.

Example
From: Content-Disposition attachment; filename="specialCharsÆØÅWhichIsSoLong"
To: Content-Disposition attachment; filename*0*="ISO-8859-1'en-us'specialCharsC6D8C0"; filename*1*="WhichIsSoLong"
This could also be encoded as:
To: Content-Disposition attachment; filename*0*="ISO-8859-1'en-us'specialCharsC6D8C0"; filename*1="WhichIsSoLong"
Notice that filename*1 does not have an * after it - denoting it IS NOT encoded.
There are some rules about this:
The encoding must be mentioned in the first part (filename*0*), which has to be encoded. No other part must specify an encoding, but if encoded it uses the encoding mentioned in the first part. Parts may be encoded or not in any order.
More information and the specification is available in RFC 2231.
Decodes a string of the form:
value0; key1=value1; key2=value2; key3=value3
The returned List of key value pairs will have the key as key and the decoded value as value.
The first value0 will have a key of .

If continuation is used, then multiple keys will be merged into one key with the different values decoded into on big value for that key.
Example:
title*0=part1 title*1=part2 will have key and value of:

title=decode(part1)decode(part2)
The string to decode. A list of decoded key value pairs. If is
Decodes the list of key value pairs into a decoded list of key value pairs.
There may be less keys in the decoded list, but then the values for the lost keys will have been appended to the new key.
The pairs to decode A decoded list of pairs
This will decode a single value of the form: ISO-8859-1'en-us'%3D%3DIamHere
Which is basically a form just using % instead of =
Notice that 'en-us' part is not used for anything.

If the single value given is not on the correct form, it will be returned without being decoded and will be set to .
The encoding used to decode with - it is given back for later use.
if input was not in the correct form. The value to decode The decoded value that corresponds to or if is not on the correct form, it will be non-decoded. If is
This will decode a single value of the form: %3D%3DIamHere Which is basically a form just using % instead of = The value to decode The encoding used to decode with The decoded value that corresponds to If is If is Class used to decode RFC 2822 Date header fields. Timezone formats that aren't +-hhmm, e.g. UTC, or K. See MatchEvaluator method for conversions Matches any +=hhmm timezone offset, e.g. +0100 Custom DateTime formats - will be tried if cannot parse the dateInput string using the default method Specified using formats at http://msdn.microsoft.com/en-us/library/8kb3ddd4%28v=vs.110%29.aspx One format per string in the array Converts a string in RFC 2822 format into a object The date to convert A valid object, which represents the same time as the string that was converted. If is not a valid date representation, then is returned. If is If the could not be parsed into a object Adjust the object given according to the timezone specified in the . The date to alter The input date, in which the timezone can be found An date altered according to the timezone Convert timezones in older formats to [+-]dddd format. The match that was found The string to replace the matched string with RFC 2822: http://www.rfc-base.org/rfc-2822.html 4.3. Obsolete Date and Time The syntax for the obsolete date format allows a 2 digit year in the date field and allows for a list of alphabetic time zone specifications that were used in earlier versions of this standard. It also permits comments and folding white space between many of the tokens. obs-day-of-week = [CFWS] day-name [CFWS] obs-year = [CFWS] 2*DIGIT [CFWS] obs-month = CFWS month-name CFWS obs-day = [CFWS] 1*2DIGIT [CFWS] obs-hour = [CFWS] 2DIGIT [CFWS] obs-minute = [CFWS] 2DIGIT [CFWS] obs-second = [CFWS] 2DIGIT [CFWS] obs-zone = "UT" / "GMT" / ; Universal Time Resnick Standards Track [Page 31] RFC 2822 Internet Message Format April 2001 ; North American UT ; offsets "EST" / "EDT" / ; Eastern: - 5/ - 4 "CST" / "CDT" / ; Central: - 6/ - 5 "MST" / "MDT" / ; Mountain: - 7/ - 6 "PST" / "PDT" / ; Pacific: - 8/ - 7 %d65-73 / ; Military zones - "A" %d75-90 / ; through "I" and "K" %d97-105 / ; through "Z", both %d107-122 ; upper and lower case -- imported lower and upper Extracts the date and time parts from the The date input string, from which to extract the date and time parts The extracted date part or if is not recognized as a valid date. If is Strips and removes all comments and excessive whitespace from the string The input to strip from The stripped string If is Converts date time string in very wrong date time format: Tue Feb 18 10:23:30 2014 (MSK) to Feb 18 2014 10:23:30 MSK The date to convert The corrected string Thanks to http://stackoverflow.com/a/7333402/477854 for inspiration This class can convert from strings like "104 kB" (104 kilobytes) to bytes. It does not know about differences such as kilobits vs kilobytes. Contains common operations needed while decoding. Remove quotes, if found, around the string. Text with quotes or without quotes Text without quotes If is Split a string into a list of strings using a specified character.
Everything inside quotes are ignored.
A string to split The character to use to split with A List of strings that was delimited by the character
that describes the ContentTransferEncoding header field See RFC 2045 section 6 for more details 7 bit Encoding 8 bit Encoding Quoted Printable Encoding Base64 Encoding Binary Encoding Utility class that divides a message into a body and a header.
The header is then parsed to a strongly typed object.
Extract the headers from the given headers string and gives it back as a MessageHeader object The string with the header information Find the end of the header section in a byte array.
The headers have ended when a blank line is found
The full message stored as a byte array The position of the line just after the header end blank line If is
Extract the header part and body part of a message.
The headers are then parsed to a strongly typed object.
The full message in bytes where header and body needs to be extracted from The extracted header parts of the message The body part of the message If is
Method that takes a full message and extract the headers from it. The message to extract headers from. Does not need the body part. Needs the empty headers end line. A collection of Name and Value pairs of headers If is Check if the next line is part of the current header value we are parsing by peeking on the next character of the .
This should only be called while parsing headers.
The reader from which the header is read from if multi-line header. otherwise
Separate a full header line into a header name and a header value. The raw header line to be separated If is Class that can parse different fields in the header sections of a MIME message. Parses the Content-Transfer-Encoding header. The value for the header to be parsed A If is If the could not be parsed to a Parses an ImportanceType from a given Importance header value. The value to be parsed A . If the is not recognized, Normal is returned. If is Parses a the value for the header Content-Type to a object. The value to be parsed A object If is Parses a the value for the header Content-Disposition to a object. The value to be parsed A object If is Parses an ID like Message-Id and Content-Id.
Example:
<test@test.com>
into
test@test.com
The id to parse A parsed ID
Parses multiple IDs from a single string like In-Reply-To. The value to parse A list of IDs Class that holds all headers for a message
Headers which are unknown the the parser will be held in the collection.

This class cannot be instantiated from outside the library.
See RFC 4021 for a large list of headers.
All headers which were not recognized and explicitly dealt with.
This should mostly be custom headers, which are marked as X-[name].

This list will be empty if all headers were recognized and parsed.
If you as a user, feels that a header in this collection should be parsed, feel free to notify the developers.
A human readable description of the body

if no Content-Description header was present in the message.
ID of the content part (like an attached image). Used with MultiPart messages.

if no Content-ID header field was present in the message.
For an ID of the message
Message keywords

The list will be empty if no Keywords header was present in the message
A List of emails to people who wishes to be notified when some event happens.
These events could be email: deletion printing received ... The list will be empty if no Disposition-Notification-To header was present in the message
See RFC 3798 for details
This is the Received headers. This tells the path that the email went.

The list will be empty if no Received header was present in the message
Importance of this email.

The importance level is set to normal, if no Importance header field was mentioned or it contained unknown information. This is the expected behavior according to the RFC.
This header describes the Content encoding during transfer.

If no Content-Transfer-Encoding header was present in the message, it is set to the default of SevenBit in accordance to the RFC.
See RFC 2045 section 6 for details
Carbon Copy. This specifies who got a copy of the message.

The list will be empty if no Cc header was present in the message
Blind Carbon Copy. This specifies who got a copy of the message, but others cannot see who these persons are.

The list will be empty if no Received Bcc was present in the message
Specifies who this mail was for

The list will be empty if no To header was present in the message
Specifies who sent the email

if no From header field was present in the message
Specifies who a reply to the message should be sent to

if no Reply-To header field was present in the message
The message identifier(s) of the original message(s) to which the current message is a reply.

The list will be empty if no In-Reply-To header was present in the message
The message identifier(s) of other message(s) to which the current message is related to.

The list will be empty if no References header was present in the message
This is the sender of the email address.

if no Sender header field was present in the message
The RFC states that this field can be used if a secretary is sending an email for someone she is working for. The email here will then be the secretary's email, and the Reply-To field would hold the address of the person she works for.
RFC states that if the Sender is the same as the From field, sender should not be included in the message.
The Content-Type header field.

If not set, the ContentType is created by the default "text/plain; charset=us-ascii" which is defined in RFC 2045 section 5.2.
If set, the default is overridden.
Used to describe if a is to be displayed or to be though of as an attachment.
Also contains information about filename if such was sent.

if no Content-Disposition header field was present in the message
The Date when the email was sent.
This is the raw value. for a parsed up value of this field.

if no Date header field was present in the message or if the date could not be parsed.
See RFC 5322 section 3.6.1 for more details
The Date when the email was sent.
This is the parsed equivalent of .
Notice that the of the object is in UTC and has NOT been converted to local .
See RFC 5322 section 3.6.1 for more details
An ID of the message that is SUPPOSED to be in every message according to the RFC.
The ID is unique.

if no Message-ID header field was present in the message
The Mime Version.
This field will almost always show 1.0

if no Mime-Version header field was present in the message
A single with no username inside.
This is a trace header field, that should be in all messages.
Replies should be sent to this address.

if no Return-Path header field was present in the message
The subject line of the message in decoded, one line state.
This should be in all messages.

if no Subject header field was present in the message
Parses a to a MessageHeader The collection that should be traversed and parsed A valid MessageHeader object If is Parses a to a The collection that should be traversed and parsed A valid object If is Parses a single header and sets member variables according to it. The name of the header The value of the header in unfolded state (only one line) If or is Class that hold information about one "Received:" header line.

Visit these RFCs for more information:
RFC 5321 section 4.4
RFC 4021 section 3.6.7
RFC 2822 section 3.6.7
RFC 2821 section 4.4
The date of this received line. Is if not present in the received header line. A dictionary that contains the names and values of the received header line.
If the received header is invalid and contained one name multiple times, the first one is used and the rest is ignored.
If the header lines looks like: from sending.com (localMachine [127.0.0.1]) by test.net (Postfix) then the dictionary will contain two keys: "from" and "by" with the values "sending.com (localMachine [127.0.0.1])" and "test.net (Postfix)".
The raw input string that was parsed into this class. Parses a Received header value. The value for the header to be parsed If is Parses the Received header name-value-list into a dictionary. The full header value for the Received header A dictionary where the name-value-list has been parsed into This class is used for RFC compliant email addresses.

The class cannot be instantiated from outside the library.
The does not cover all the possible formats for RFC 5322 section 3.4 compliant email addresses. This class is used as an address wrapper to account for that deficiency.
The email address of this
It is possibly string.Empty since RFC mail addresses does not require an email address specified.
Example header with email address:
To: Test test@mail.com
Address will be test@mail.com
Example header without email address:
To: Test
Address will be .
The display name of this
It is possibly since RFC mail addresses does not require a display name to be specified.
Example header with display name:
To: Test test@mail.com
DisplayName will be Test
Example header without display name:
To: test@test.com
DisplayName will be
This is the Raw string used to describe the . The associated with the . The value of this property can be in instances where the cannot represent the address properly.
Use property to see if this property is valid.
Specifies if the object contains a valid reference. Constructs an object from a object.
This constructor is used when we were able to construct a from a string.
The address that was parsed into The raw unparsed input which was parsed into the If or is
When we were unable to parse a string into a , this constructor can be used. The Raw string is then used as the . The raw unparsed input which could not be parsed If is A string representation of the object Returns the string representation for the object Parses an email address from a MIME header

Examples of input: Eksperten mailrobot <noreply@mail.eksperten.dk>
"Eksperten mailrobot" <noreply@mail.eksperten.dk>
<noreply@mail.eksperten.dk>
noreply@mail.eksperten.dk

It might also contain encoded text, which will then be decoded.
The value to parse out and email and/or a username A If is RFC 5322 section 3.4 for more details on email syntax.
For more information about encoded text.
Parses input of the form
Eksperten mailrobot <noreply@mail.eksperten.dk>, ...
to a list of RFCMailAddresses
The input that is a comma-separated list of EmailAddresses to parse A List of objects extracted from the parameter. If is
This is the root of the email tree structure.
for a description about the structure.

A Message (this class) contains the headers of an email message such as: - To - From - Subject - Content-Type - Message-ID which are located in the property.

Use the property to find the actual content of the email message.
Returns the ID of the message when this is available in the (as specified in [RFC2822]). Null when not available Headers of the Message. This is the body of the email Message.

If the body was parsed for this Message, this property will never be .
This will return the first where the is set to "html/text". This will return when there is no "html/text" found. This will return the first where the is set to "text/plain". This will be when there is no "text/plain" found. This will return all the message parts that are flagged as . This will be when there are no message parts that are flagged as . The raw content from which this message has been constructed.
These bytes can be persisted and later used to recreate the Message.
Convenience constructor for .

Creates a message from a byte array. The full message including its body is parsed.
The byte array which is the message contents to parse
Constructs a message from a byte array.

The headers are always parsed, but if is , the body is not parsed.
The byte array which is the message contents to parse if the body should be parsed, if only headers should be parsed out of the byte array
Returns the list of as a normal or html string A list with one or more objects When true the E-mail addresses are converted to hyperlinks Set this to true when the E-mail body format is html Save this to a file.

Can be loaded at a later time using the method.
The File location to save the to. Existent files will be overwritten. If is Other exceptions relevant to using a might be thrown as well
Save this to a stream.
The stream to write to If is Other exceptions relevant to might be thrown as well
Loads a from a file containing a raw email. The File location to load the from. The file must exist. If is If does not exist Other exceptions relevant to a might be thrown as well A with the content loaded from the Loads a from a containing a raw email. The from which to load the raw If is Other exceptions relevant to might be thrown as well A with the content loaded from the A MessagePart is a part of an email message used to describe the whole email parse tree.

Email messages are tree structures:
Email messages may contain large tree structures, and the MessagePart are the nodes of the this structure.
A MessagePart may either be a leaf in the structure or a internal node with links to other MessageParts.
The root of the message tree is the class.

Leafs:
If a MessagePart is a leaf, the part is not a MultiPart message.
Leafs are where the contents of an email are placed.
This includes, but is not limited to: attachments, text or images referenced from HTML.
The content of an attachment can be fetched by using the property.
If you want to have the text version of a MessagePart, use the method which will
convert the into a string using the encoding the message was sent with.

Internal nodes:
If a MessagePart is an internal node in the email tree structure, then the part is a MultiPart message.
The property will then contain links to the parts it contain.
The property of the MessagePart will not be set.

See the example for a parsing example.
This class cannot be instantiated from outside the library.
This example illustrates how the message parse tree looks like given a specific message

The message source in this example is:
MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="frontier" This is a message with multiple parts in MIME format. --frontier Content-Type: text/plain This is the body of the message. --frontier Content-Type: application/octet-stream Content-Transfer-Encoding: base64 PGh0bWw+CiAgPGHLYWQ+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPHA+VGhpcyBpcyB0aGUg Ym9keSBvZiB0aGUgbWVzc2FnZS48L3A+CiAgPC9ib2R5Pgo8L2h0bWw+Cg== --frontier-- The tree will look as follows, where the content-type media type of the message is listed
- Message root - multipart/mixed MessagePart - text/plain MessagePart - application/octet-stream MessagePart It is possible to have more complex message trees like the following:
- Message root - multipart/mixed MessagePart - text/plain MessagePart - text/plain MessagePart - multipart/parallel - audio/basic - image/tiff - text/enriched - message/rfc822 But it is also possible to have very simple message trees like:
- Message root - text/plain
The Content-Type header field.

If not set, the ContentType is created by the default "text/plain; charset=us-ascii" which is defined in RFC 2045 section 5.2.

If set, the default is overridden.
A human readable description of the body

if no Content-Description header was present in the message.
This header describes the Content encoding during transfer.

If no Content-Transfer-Encoding header was present in the message, it is set to the default of SevenBit in accordance to the RFC.
See RFC 2045 section 6 for details
ID of the content part (like an attached image). Used with MultiPart messages.

if no Content-ID header field was present in the message.
Used to describe if a is to be displayed or to be though of as an attachment.
Also contains information about filename if such was sent.

if no Content-Disposition header field was present in the message
This is the encoding used to parse the message body if the
is not a MultiPart message. It is derived from the character set property.
This is the parsed body of this .
It is parsed in that way, if the body was ContentTransferEncoded, it has been decoded to the correct bytes.

It will be if this is a MultiPart message.
Use to check if this is a MultiPart message.
This will be set to true if this is the first found Text . This way it indicates that this is the text variant of the E-mail body. This will be set to true if this is the first found Html . This way it indicates that this is the html variant of the E-mail body. Describes if this is a MultiPart message

The is a MultiPart message if the media type property starts with "multipart/"
A is considered to be holding text in it's body if the MediaType starts either "text/" or is equal to "message/rfc822" A is considered to be an inline attachment, if
it is has the Inline set to True
A is considered to be an attachment, if
- it is not holding text and is not a MultiPart message
or
- it has a Content-Disposition header that says it is an attachment
This is a convenient-property for figuring out a FileName for this .
If the is a MultiPart message, then it makes no sense to try to find a FileName.

The FileName can be specified in the , or properties.
If none of these places two places tells about the FileName, a default is returned.
If this is a MultiPart message, then this property has a list of each of the Multiple parts that the message consists of.

It is if it is not a MultiPart message.
Use to check if this is a MultiPart message.
Used to construct the topmost message part The body that needs to be parsed The headers that should be used from the message If or is Parses a character set into an encoding The character set that needs to be parsed. is allowed. The encoding specified by the parameter, or ASCII if the character set was or empty Figures out the filename of this message part. property. The body that needs to be parsed The headers that should be used from the message The default filename to use, if no other could be found The filename found, or the default one if not such filename could be found in the headers if is Parses a byte array as a body of an email message. The byte array to parse as body of an email message. This array may not contain headers. Parses the byte array as a MultiPart message.
It is not valid to call this method if returned .
Fills the property of this .
The byte array which is to be parsed as a MultiPart message
Given a byte array describing a full message.
Parses the byte array into a .
The byte array containing both headers and body of a message A which was described by the byte array
Gets a list of byte arrays where each entry in the list is a full message of a message part The raw byte array describing the body of a message which is a MultiPart message The delimiter that splits the different MultiPart bodies from each other A list of byte arrays, each a full message of a If is Method that is able to find a specific MultiPart boundary in a Stream.
The Stream passed should not be used for anything else then for looking for MultiPart boundaries The stream to find the next MultiPart boundary in. Do not use it for anything else then with this method. The MultiPart boundary to look for. This should be found in the header Is set to if the next MultiPart boundary was indicated to be the last one, by having -- appended to it. Otherwise set to
The position of the first character of the line that contained MultiPartBoundary or -1 if no (more) MultiPart boundaries was found
Decodes a byte array into another byte array based upon the Content Transfer encoding The byte array to decode into another byte array The of the byte array A byte array which comes from the being used on the If is Thrown if the is unsupported Gets this MessagePart's as text.
This is simply the being used on the raw bytes of the property.
This method is only valid to call if it is not a MultiPart message and therefore contains a body.
The property as a string
Save this 's contents to a file.
There are no methods to reload the file.
The File location to save the to. Existent files will be overwritten. If is Other exceptions relevant to using a might be thrown as well
Save this 's contents to a stream.
The stream to write to If is Other exceptions relevant to might be thrown as well
This is an abstract class which handles traversing of a tree structure.
It runs through the message structure using a depth-first traversal.
The answer you want from traversing the message tree structure
Call this when you want an answer for a full message. The message you want to traverse An answer if is Call this method when you want to find an answer for a The part you want an answer from. An answer if is For a concrete implementation an answer must be returned for a leaf , which are MessageParts that are not MultiParts. The message part which is a leaf and thereby not a MultiPart An answer For a concrete implementation, when a MultiPart has fetched it's answers from it's children, these answers needs to be merged. This is the responsibility of this method. The answer that the leafs gave A merged answer Finds all s which are considered to be attachments Finds the first which have a given MediaType in a depth first traversal. This will be flagged as the or according to the searched MediaType ("text/html" or "text/plain") Finds the first with the given MediaType The to start looking in The MediaType to look for. Case is ignored. A with the given MediaType or if no such was found Finds the first with the given MediaType The to start looking in The MediaType to look for. Case is ignored. A with the given MediaType or if no such was found This interface describes a MessageTraverser which is able to traverse a Message hierarchy structure and deliver some answer. This is the type of the answer you want to have delivered. Call this when you want to apply this traverser on a . The which you want to traverse. Must not be . An answer Call this when you want to apply this traverser on a . The which you want to traverse. Must not be . An answer This interface describes a MessageTraverser which is able to traverse a Message structure and deliver some answer given some question. This is the type of the answer you want to have delivered. This is the type of the question you want to have answered. Call this when you want to apply this traverser on a . The which you want to traverse. Must not be . The question An answer Call this when you want to apply this traverser on a . The which you want to traverse. Must not be . The question An answer An abstract class that implements the MergeLeafAnswers method.
The method simply returns the union of all answers from the leaves.
Adds all the in one big answer The answers to merge A list with has all the elements in the lists if is An Address Book EntryID structure specifies several types of Address Book objects, including individual users, distribution lists, containers, and templates. See https://msdn.microsoft.com/en-us/library/ee160588(v=exchg.80).aspx Flags (4 bytes): This value MUST be set to 0x00000000. Bits in this field indicate under ProviderUID (16 bytes): The identifier for the provider that created the EntryID. This value is used to route EntryIDs to the correct provider and MUST be set to %xDC.A7.40.C8.C0.42.10.1A.B4.B9.08.00.2B.2F.E1.82. Version (4 bytes): This value MUST be set to %x01.00.00.00. Type (4 bytes): An integer representing the type of the object. It MUST be one of the values from the following table. The X500 DN of the Address Book object. A distinguished name (DN), in Teletex form, of an object that is in an address book. An X500 DN can be more limited in the size and number of relative distinguished names (RDNs) than a full DN. The recurrence type of an appointment There is no reccurence The appointment is daily The appointment is weekly The appointment is monthly The appointment is yearly The intent of an appointment The user is the owner of the Meeting object's The user is a delegate acting on a Meeting object in a delegator's Calendar folder. If this bit is set, the ciManager bit SHOULD NOT be set The user deleted the Meeting object with no response sent to the organizer The user deleted an exception to a recurring series with no response sent to the organizer Appointment accepted as tentative Appointment accepted Appointment declined The user modified the start time The user modified the end time The user changed the location of the meeting The user declined an exception to a recurring series The user declined an exception to a recurring series The user canceled an exception to a recurring serie The base class for reading an Outlook MSG file Class used to contain all the appointment information of a . Returns the location for the appointment, null when not available Returns the start time for the appointment, null when not available Returns the end time for the appointment, null when not available Returns a string with all the attendees (To and CC), if you also want their E-mail addresses then get the from the message, null when not available Returns a string with all the TO (mandatory) attendees. If you also want their E-mail addresses then get the from the and filter this one on . Null when not available Returns a string with all the CC (optional) attendees. If you also want their E-mail addresses then get the from the and filter this one on . Null when not available Returns A value of true for the PidLidAppointmentNotAllowPropose property ([MS-OXPROPS] section 2.17) indicates that attendees are not allowed to propose a new date and/or time for the meeting. A value of false or the absence of this property indicates that the attendees are allowed to propose a new date and/or time. This property is meaningful only on Meeting objects, Meeting Request objects, and Meeting Update objects. Null when not available Returns a object with all the unsendable attendees. Null when not available Returns the reccurence type (daily, weekly, monthly or yearly) for the Returns the reccurence type (daily, weekly, monthly or yearly) for the as a string, null when not available Returns the reccurence patern for the , null when not available The clients intention for the the as a list, null when not available of The for the the as text Initializes a new instance of the class. The message. Class represents an attachment contains the data of the attachment as an byte array The name of the that contains this attachment Returns the filename of the attachment Retuns the data Returns the content id or null when not available Returns the rendering position or -1 when unknown True when the attachment is inline True when the attachment is a contact photo. This can only be true when the object is an object. Returns the date and time when the attachment was created or null when not available Returns the date and time when the attachment was last modified or null when not available Returns the MAPI Property Hidden, the value may only exist when it has been set True Returns true when the attachment is an OLE attachment Creates an attachment object from a Initializes a new instance of the class. The message. The name of the that contains this attachment Tries to resolve an attachment when the is of the type , or Tries to save an attachment as a png file with the user specified buffer Class used to contain all the contact information Returns the full name (e.g. De heer Kees van Spelde), null when not available Returns the prefix of the name (e.g. De heer), null when not available Returns the initials, null when not available Returns the sur name (e.g. Spelde), null when not available Returns the given name (e.g. Kees), null when not available Returns the generation (e.g. Jr.), null when not available Returns the function, null when not available Returns the department, null when not available Returns the name of the company, null when not available Returns the named propery work (business) address (Outlook 2007 or higher), null when not available Returns the street of the business address, null when not available Returns the city of the business address, null when not available Returns the state of the business address, null when not available Returns the postal code of the business address, null when not available Returns the country of the business address, null when not available Returns the business telephone number, null when not available Returns the business second telephone number, null when not available Returns the business fax number, null when not available Returns the business home page, null when not available Returns the named propery home address (Outlook 2007 or higher) Returns the street of the home address, null when not available Returns the city of the home address, null when not available Returns the state of the home address, null when not available Returns the postal code of the home address, null when not available Returns the country of the home address, null when not available Returns the home telephone number, null when not available Returns the home second telephone number, null when not available Returns the home fax number, null when not available Returns the named propery other address (Outlook 2007 or higher) Returns the street of the other address, null when not available Returns the city of the other address, null when not available Returns the state of the other address, null when not available Returns the postal code of the other address, null when not available Returns the country of the other address, null when not available Returns the other telephone number, null when not available Returns the primary telephone number, null when not available Returns the primary fax number, null when not available Returns the name of the assistant, null when not available Returns the telephone number of the assistant, null when not available Return the instant messaging address, null when not available Returns the company main telephone number, null when not available Returns the cellular telephone number, null when not available Returns the car telephone number, null when not available Returns the radio telephone number, null when not available Returns the beeper telephone number, null when not available Returns the callback telephone number, null when not available Returns the telex number, null when not available Returns the text telephone (TTYTDD), null when not available Returns the ISDN number, null when not available Returns the name property e-mail address 1 (Outlook 2007 or higher), null when not available Returns the name property e-mail displayname 1 (Outlook 2007 or higher), null when not available Returns the name property e-mail address 2 (Outlook 2007 or higher), null when not available Returns the name property e-mail displayname 2 (Outlook 2007 or higher), null when not available Returns the name property e-mail address 3 (Outlook 2007 or higher), null when not available Returns the name property e-mail displayname 3 (Outlook 2007 or higher), null when not available Returns the birthday, null when not available Returns the wedding/anniversary, null when not available Returns the name of the spouse, null when not available Returns the profession, null when not available Returns the homepage (html), null when not available Initializes a new instance of the class. The message. Class used to contain all the flag (follow up) information of a . Returns the flag request text Returns the Status of the flag Initializes a new instance of the class. The message. Class that is used as a placeholder for the found mapped named mapi tags Contains the named property identifier Contains the identifier that is found in the entry or string stream Class used to map known MAPI tags to the internal used values Initializes a new instance of the class. The message. Returns a dictionary with all the property mappings List with all the named property idents, e.g 8005, 8006, 801C, etc... Class represent a MSG object The name of the stream that contains this message Contains the of this Message contains the name of the file Contains the date and time when the message was created or null when not available Contains the name of the last user (or creator) that has changed the Message object or null when not available Contains the date and time when the message was created or null when not available contains all the objects Contains an URL to the help page of a mailing list Contains an URL to the subscribe page of a mailing list Contains an URL to the unsubscribe page of a mailing list Contains the date/time in UTC format when the object has been sent, null when not available Contains the date/time in UTC format when the object has been received, null when not available Contains the of the object, null when not available Contains all the and objects. Contains the subject prefix of the object Contains the subject of the object Contains the normalized subject of the object Contains the text body of the object Contains the html body of the object Contains the rtf body of the object Contains the that is used for the or . It will contain null when the codepage could not be read from the Contains the that is used for the . It will contain null when the codepage could not be read from the Contains the the Windows LCID of the end user who created this Contains the object Contains the object Contains the object Contains the object Contains the object The conversation index The conversation topic The message size The transport message headers Returns the ID of the message when the MSG file has been sent across the internet (as specified in [RFC2822]). Null when not available Gives the type of this message object Returns the filename of the message object. For message objects Outlook uses the subject. It strips invalid filename characters. When there is no filename the name from will be used Returns the date and time when the message was created or null when not available Returns the name of the last user (or creator) that has changed the Message object or null when not available Returns the date and time when the message was last modified or null when not available Returns the raw Transport Message Headers Returns the sender of the Message Returns the representing sender of the Message, null when not available Returns the list of recipients in the message object Returns an URL to the help page of an mailing list when this message is part of a mailing or null when not available Returns an URL to the subscribe page of an mailing list when this message is part of a mailing or null when not available Returns an URL to the unsubscribe page of an mailing list when this message is part of a mailing Returns the date/time in UTC format when the message object has been sent, null when not available PR_MESSAGE_DELIVERY_TIME is the time that the message was delivered to the store and PR_CLIENT_SUBMIT_TIME is the time when the message was sent by the client (Outlook) to the server. Now in this case when the Outlook is offline, it refers to the local store. Therefore when an email is sent, it gets submitted to the local store and PR_MESSAGE_DELIVERY_TIME gets set the that time. Once the Outlook is online at that point the message gets submitted by the client to the server and the PR_CLIENT_SUBMIT_TIME gets stamped. Null when not available Returns the of the object, null when not available Returns the of the object object as text Returns a list with and/or objects that are attachted to the object Returns the rendering position of this object when it was added to another object and the body type was set to RTF Returns or sets the subject prefix of the E-mail Returns the subject of the object Returns the normalized subject of the E-mail Returns the available E-mail headers. These are only filled when the message has been sent accross the internet. Returns null when there aren't any message headers Returns a object when a flag has been set on the . Returns null when not available. Returns an object when the is a . Returns null when not available. Returns a object. This property is only available when:
- The is an and the object is not null
- The is an or
Returns a object when the is a . Returns null when not available. Returns the categories that are placed in the Outlook message. Only supported for outlook messages from Outlook 2007 or higher Returns the body of the Outlook message in plain text format. The body of the Outlook message in plain text format. Returns the body of the Outlook message in RTF format. The body of the Outlook message in RTF format. Returns the body of the Outlook message in HTML format. The body of the Outlook message in HTML format. Returns the that is used for the or . It will return when the codepage could not be read from the See the property when dealing with the Returns the that is used for the . It will return the systems default encoding when the codepage could not be read from the See the property when dealing with the Returns the the for the Windows LCID of the end user who created this It will return null when the the Windows LCID could not be read from the Returns true when the signature is valid when the is a . It will return null when the signature is invalid or the has another Returns the name of the person who signed the when the is a . It will return null when the signature is invalid or the has another Returns the date and time when the has been signed when the is a . It will return null when the signature is invalid or the has another Returns the certificate that has been used to sign the when the is a . It will return null when the signature is invalid or the has another Returns information about who has received this message. This information is only set when a message has been received and when the message provider stamped this information into this message. Null when not available. Returns the index of the conversation. When not available null is returned Returns the topic of the conversation. When not available null is returned Returns the size of the message. When not available null is returned Initializes a new instance of the class from a msg file. The msg file to load FileAcces mode, default is Read Initializes a new instance of the class from a containing an IStorage. The containing an IStorage. FileAcces mode, default is Read Initializes a new instance of the class on the specified . The storage to create the on. The name of the that contains this message Try's to read the E-mail transport headers. They are only there when a msg file has been sent over the internet. When a message stays inside an Exchange server there are not any headers Processes sub storages on the specified storage to capture attachment and recipient data. The storage to check for attachment and recipient data. Processes the signed content Load's and parses a signed message. The signed message should be in an attachment called smime.p7m Load's and parses a signed message Loads the attachment data out of the specified storage. The attachment storage. The name of the Removes the given from the object. message.DeleteAttachment(message.Attachments[0]); Raised when it is not possible to remove the or from the Copies the given to the given Saves this to the specified Name of the file. Saves this to the specified The stream to save to. Gets the and from the object and sets the and Returns the E-mail sender address in RFC822 format, e.g. "Pan, P (Peter)" <Peter.Pan@neverland.com> Returns the E-mail sender address in a human readable format Set to true to return the E-mail address as an html string Set to true to convert the E-mail addresses to a hyperlink. Will be ignored when is set to false Returns all the recipient for the given The to return Returns the E-mail recipients in RFC822 format, e.g. "Pan, P (Peter)" <Peter.Pan@neverland.com> Selects the Recipient type to retrieve Returns the E-mail recipients in a human readable format Selects the Recipient type to retrieve Set to true to return the E-mail address as an html string Set to true to convert the E-mail addresses to hyperlinks. Will be ignored when is set to false Returns the attachments names as a comma seperated string This class contains information about the person that has received this message Returns the address type (e.g. SMTP) Returns the E-mail address, null when not available Returns the display name, null when not available Initializes a new instance of the class. Class used to contain To, CC and BCC recipients of a Returns the E-mail address, null when not available Returns the display name, null when not available Returns the , null when not available Returns the addresstype, null when not available Initializes a new instance of the class. The message. Class used to contain the Sender of a Returns the E-mail address Returns the display name Initializes a new instance of the class. The E-mail address of the sender The displayname of the sender Class used to contain the representing sender of a Returns the E-mail address Returns the display name Returns the addresstype, null when not available Initializes a new instance of the class. The E-mail address of the representing sender The displayname of the representing sender The address type The statistics for all streams in the Storage associated with this instance The statistics for all storgages in the Storage associated with this instance Header size of the property stream in the IStorage associated with this instance A reference to the parent message that this message may belong to The opened compound file The root storage associated with this instance. Will contain all the named MAPI properties when the class that inherits the class is a class. Otherwhise the List will be null mapped to Gets the top level Outlook message from a sub message at any level. The top level outlook message. Gets a value indicating whether this instance is the top level Outlook message. true if this instance is the top level outlook message; otherwise, false . The way the storage is opened Initializes a new instance of the class from a file. The file to load. FileAcces mode, default is Read Initializes a new instance of the class from a containing an IStorage. The containing an IStorage. FileAcces mode, default is Read Initializes a new instance of the class on the specified . The storage to create the on. Releases unmanaged resources and performs other cleanup operations before the is reclaimed by garbage collection. Processes sub streams and storages on the specified storage. The storage to get sub streams and storages for. Gets the data in the specified stream as a byte array. Returns null when the does not exists. Name of the stream to get data for. A byte array containg the stream data. Gets the data in the specified stream as a string using the specifed encoding to decode the stream data. Returns null when the does not exists. Name of the stream to get string data for. The encoding to decode the stream data with. The data in the specified stream as a string. Gets the raw value of the MAPI property. The 4 char hexadecimal prop identifier. The raw value of the MAPI property. Gets the MAPI property value from a stream or storage in this storage. The 4 char hexadecimal prop identifier. The value of the MAPI property or null if not found. Gets the MAPI property value from the property stream in this storage. The 4 char hexadecimal prop identifier. The value of the MAPI property or null if not found. Gets the value of the MAPI property as an The 4 char hexadecimal prop identifier. The value of the MAPI property as a string. Gets the value of the MAPI property as a string. The 4 char hexadecimal prop identifier. The value of the MAPI property as a string. Gets the value of the MAPI property as a list of string. The 4 char hexadecimal prop identifier. The value of the MAPI property as a list of string. Gets the value of the MAPI property as a integer. The 4 char hexadecimal prop identifier. The value of the MAPI property as a integer. Gets the value of the MAPI property as a double. The 4 char hexadecimal prop identifier. The value of the MAPI property as a double. Gets the value of the MAPI property as a datetime. The 4 char hexadecimal prop identifier. The value of the MAPI property as a datetime or null when not set Gets the value of the MAPI property as a bool. The 4 char hexadecimal prop identifier. The value of the MAPI property as a boolean or null when not set. Gets the value of the MAPI property as a byte array. The 4 char hexadecimal prop identifier. The value of the MAPI property as a byte array. Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. Class used to contain all the task information. A task can also be added to an E-mail () when the FollowUp flag is set. Returns the start datetime of the , null when not available Returns the due datetime of the , null when not available Returns the Status of the , null when not available Returns the Status of the as a string, null when not available Returns the estimated effort (in minutes) that is needed for task, null when not available Returns true when the has been completed, null when not available Returns the estimated effort that is needed for the as a , null when no available Returns the estimated effort that is needed for the as a string (e.g. 11 weeks), null when no available Returns the actual effort that is spent on the as a , null when not available Returns the actual effort that is spent on the as a string (e.g. 11 weeks), null when no available Returns the owner of the , null when not available Returns the contacts of the , null when not available Returns the name of the company for who the task is done, null when not available Returns the billing information for the , null when not available Returns the mileage that is driven to do the , null when not available Returns the datetime when the was completed, only set when is true. Otherwise null Initializes a new instance of the class. The message. The flag state of an message The msg object has been flagged as completed The msg object has been flagged and marked as a task Used as a temporary placeholder for information about the inline attachents Returns the rendering position for the attachmnt Returns the name of the icon when this attachment is part of an RTF body and is shown as an icon Returns the name for the attachment Returns the full name for the attachment The type of a Any: this property type value matches any type; a server MUST return the actual type in its response. Servers MUST NOT return this type in response to a client request other than NspiGetIDsFromNames or the RopGetPropertyIdsFromNamesROP request ([MS-OXCROPS] section 2.2.8.1). (PT_UNSPECIFIED) None: This property is a placeholder. (PT_NULL) 2 bytes; a 16-bit integer (PT_I2, i2, ui2) 4 bytes; a 32-bit integer (PT_LONG, PT_I4, int, ui4) 4 bytes; a 32-bit floating point number (PT_FLOAT, PT_R4, float, r4) 8 bytes; a 64-bit floating point number (PT_DOUBLE, PT_R8, r8) 8 bytes; a 64-bit floating point number in which the whole number part represents the number of days since December 30, 1899, and the fractional part represents the fraction of a day since midnight (PT_APPTIME) 4 bytes; a 32-bit integer encoding error information as specified in section 2.4.1. (PT_ERROR) 1 byte; restricted to 1 or 0 (PT_BOOLEAN. bool) The property value is a Component Object Model (COM) object, as specified in section 2.11.1.5. (PT_OBJECT) 8 bytes; a 64-bit integer (PT_LONGLONG, PT_I8, i8, ui8) 8 bytes; a 64-bit integer (PT_LONGLONG, PT_I8, i8, ui8) Variable size; a string of Unicode characters in UTF-16LE format encoding with terminating null character (0x0000). (PT_UNICODE, string) Variable size; a string of multibyte characters in externally specified encoding with terminating null character (single 0 byte). (PT_STRING8) ... ANSI format 8 bytes; a 64-bit integer representing the number of 100-nanosecond intervals since January 1, 1601 (PT_SYSTIME, time, datetime, datetime.tz, datetime.rfc1123, Date, time, time.tz) 16 bytes; a GUID with Data1, Data2, and Data3 fields in little-endian format Variable size; a COUNT field followed by that many bytes. (PT_BINARY) Variable size; a COUNT field followed by that many PT_MV_SHORT values. (PT_MV_SHORT, PT_MV_I2, mv.i2) Variable size; a COUNT field followed by that many PT_MV_LONG values. (PT_MV_LONG, PT_MV_I4, mv.i4) Variable size; a COUNT field followed by that many PT_MV_FLOAT values. (PT_MV_FLOAT, PT_MV_R4, mv.float) Variable size; a COUNT field followed by that many PT_MV_DOUBLE values. (PT_MV_DOUBLE, PT_MV_R8) Variable size; a COUNT field followed by that many PT_MV_CURRENCY values. (PT_MV_CURRENCY, mv.fixed.14.4) Variable size; a COUNT field followed by that many PT_MV_APPTIME values. (PT_MV_APPTIME) Variable size; a COUNT field followed by that many PT_MV_LONGLONGvalues. (PT_MV_I8, PT_MV_I8) Variable size; a COUNT field followed by that many PT_MV_UNICODE values. (PT_MV_UNICODE) Variable size; a COUNT field followed by that many PT_MV_UNICODE values. (PT_MV_UNICODE) Variable size; a COUNT field followed by that many PT_MV_STRING8 values. (PT_MV_STRING8, mv.string) Variable size; a COUNT field followed by that many PT_MV_SYSTIME values. (PT_MV_SYSTIME) Variable size; a COUNT field followed by that many PT_MV_CLSID values. (PT_MV_CLSID, mv.uuid) Variable size; a COUNT field followed by that many PT_MV_BINARY values. (PT_MV_BINARY, mv.bin.hex) Contains all MAPI related constants Contains the SMTP address for the address book object. Second place to search for an E-mail address Storage prefix tag Prefix that is placed before an attachment tag Sub storage version 1.0 streams Stream that contains the internet E-mail headers The stream that contains all the MAPI properties Contains the streams needed to perform named property mapping The GUID stream The property stream The string stream http://msdn.microsoft.com/en-us/library/ee202480%28v=exchg.80%29.aspx Stream properties begin for header or top Stream properties begin for attachments or recipients There is no attachment The PR_ATTACH_DATA_BIN property contains the attachment data The PR_ATTACH_PATHNAME or PR_ATTACH_LONG_PATHNAME property contains a fully qualified path identifying the attachment to recipients with access to a common file server The PR_ATTACH_PATHNAME or PR_ATTACH_LONG_PATHNAME property contains a fully qualified path identifying the attachment The PR_ATTACH_PATHNAME or PR_ATTACH_LONG_PATHNAME property contains a fully qualified path identifying the attachment The attachment is a msg file The attachment in an OLE object The recipient is an TO E-mail address The recipient is a CC E-mail address The recipient is a BCC E-mail address The recipient is a resource (e.g. a room) The recipient is a room (uses PR_RECIPIENT_TYPE_EXE) needs Exchange 2007 or higher E-mail follow up flag (named property) Specifies the flag state of the message object; Not present, 1 = Completed, 2 = Flagged. Only available from Outlook 2007 and up. Contains the date when the task was completed. Only filled when is true. Only available from Outlook 2007 and up. of the task (named property) Start date of the task (named property) Due date of the task (named property) True when the task is complete (named property) The actual task effort in minutes (named property) The estimated task effort in minutes (named property) The complete percentage of the task (named property) The contacts of the task (named property) The companies for the task (named property) The task billing information (named property) The task mileage information (named property) The task owner (named property) Appointment location (named property) Appointment reccurence type (named property) Appointment reccurence pattern (named property) Appointment start time (greenwich time) (named property) Appointment end time (greenwich time) (named property) Appointment all attendees string (named property) Appointment to attendees string (named property) Contains a list of all the sendable attendees who are also required attendees. The value for each attendee is the PR_DISPLAY_NAME (PidTagDisplayName) property of the attendee’s address book. Separate entries must be delimited by a semicolon followed by a space. This property is not required. Indicates whether attendees are not allowed to propose a new date/time for the meeting. Contains a list of unsendable attendees. This property is not required but should be set. Its format is detailed in [MS-OXOCAL]. The PidLidClientIntent property ([MS-OXPROPS] section 2.58) indicates what actions a user has taken on a Meeting object Instant messaging address (named property) Home address (named property) Work address (named property) Other address (named property) E-mail 1 address (named property) E-mail 1 display name (named property E-mail 2 address (named property) E-mail 2 display name (named property E-mail 3 address (named property) E-mail 3 display name (named property) Html (named property) Categories (named property) Contains the format of the Simple Mail Transport Protocol (SMTP) email address of the sending mailbox owner Contains the Simple Mail Transport Protocol (SMTP) email address for the messaging user who is represented by the sender Contains the name of the last user (or creator) to change the Message object Can contain the E-mail address of the sender (named property) Unnamed property that may contain the SMTP email address of the sender Contains the code page that is used in HTML when this is added in binary format Contains the language client used to create the message. Contains the code page that is used in the body Indicates the code page used for PR_BODY (PidTagBody) or PR_BODY_HTML (PidTagBodyHtml) properties. Corresponds to the message ID field as specified in [RFC2822]. The prefix for a property tag The message types The message type is unknown The message is a normal E-mail Non-delivery report for a standard E-mail (REPORT.IPM.NOTE.NDR) Delivery receipt for a standard E-mail (REPORT.IPM.NOTE.DR) Delivery receipt for a delayed E-mail (REPORT.IPM.NOTE.DELAYED) Read receipt for a standard E-mail (REPORT.IPM.NOTE.IPNRN) Non-read receipt for a standard E-mail (REPORT.IPM.NOTE.IPNNRN) The message in an E-mail that is encrypted and can also be signed (IPM.Note.SMIME) Non-delivery report for a Secure MIME (S/MIME) encrypted and opaque-signed E-mail (REPORT.IPM.NOTE.SMIME.NDR) Delivery report for a Secure MIME (S/MIME) encrypted and opaque-signed E-mail (REPORT.IPM.NOTE.SMIME.DR) The message is an E-mail that is clear signed (IPM.Note.SMIME.MultipartSigned) The message is a secure read receipt for an E-mail (IPM.Note.Receipt.SMIME) Non-delivery report for an S/MIME clear-signed E-mail (REPORT.IPM.NOTE.SMIME.MULTIPARTSIGNED.NDR) Delivery receipt for an S/MIME clear-signed E-mail (REPORT.IPM.NOTE.SMIME.MULTIPARTSIGNED.DR) The message is an E-mail that is generared signed (IPM.Note.BMA.Stub) The message is a short message service (IPM.Note.Mobile.SMS) The message is an appointment (IPM.Appointment) The message is a notification for an appointment (IPM.Notification.Meeting) The message is a schedule for an appointment (IPM.Schedule.Meeting) The message is a request for an appointment (IPM.Schedule.Meeting.Request) The message is a request for an appointment (REPORT.IPM.SCHEDULE.MEETING.REQUEST.NDR) The message is a response to an appointment (IPM.Schedule.Response) The message is a positive response to an appointment (IPM.Schedule.Resp.Pos) Non-delivery report for a positive meeting response (accept) (REPORT.IPM.SCHEDULE.MEETING.RESP.POS.NDR) The message is a negative response to an appointment (IPM.Schedule.Resp.Neg) Non-delivery report for a negative meeting response (declinet) (REPORT.IPM.SCHEDULE.MEETING.RESP.NEG.NDR) The message is a response to tentatively accept the meeting request (IPM.Schedule.Meeting.Resp.Tent) Non-delivery report for a Tentative meeting response (REPORT.IPM.SCHEDULE.MEETING.RESP.TENT.NDR) The message is a cancelation an appointment (IPM.Schedule.Meeting.Canceled) Non-delivery report for a cancelled meeting notification (REPORT.IPM.SCHEDULE.MEETING.CANCELED.NDR) The message is a contact card (IPM.Contact) The message is a task (IPM.Task) The message is a task request accept (IPM.TaskRequest.Accept) The message is a task request decline (IPM.TaskRequest.Decline) The message is a task request update (IPM.TaskRequest.Update) The message is a sticky note (IPM.StickyNote) The message is Cisco Unity Voice message (IPM.Note.Custom.Cisco.Unity.Voice) IPM.NOTE.RIGHTFAX.ADV The message is Skype for Business missed message (IPM.Note.Microsoft.Missed) The message is a Skype for Business conversation (IPM.Note.Microsoft.Conversation) The importancy of the message Low Normal High Pointer to a variable of type SPropValue that specifies the property value array describing the properties for the recipient. The rgPropVals member can be NULL. The id of the property Returns the Property as a readable string without the streamprefix and type Returns the Property as a readable string The Returns true when this property is part of a multivalue property The property data Returns as an integer when is set to , or Raised when the is not or Returns as a single when is set to Raised when the is not Returns as a single when is set to Raised when the is not Returns as a decimal when is set to Raised when the is not Returns as a datetime when is set to or Raised when the is not set to or Returns as a boolean when is set to Raised when the is not set to Returns as a boolean when is set to Raised when the is not set to Returns as a string when is set to or Raised when the is not set to or Returns as a byte[] when is set to Raised when the is not set to Returns as a Guid when is set to Raised when the is not set to Converts a byte array to a decimal The byte array The offset to start reading Creates this object and sets all its propertues The id of the property The The property data Set to true to indicate that this property is part of a multivalue property Recipient types Recipient is unknown The recipient is an TO E-mail address The recipient is a CC E-mail address The recipient is a BCC E-mail address The recipient is a resource (e.g. a room) The recipient is a room (uses PR_RECIPIENT_TYPE_EXE) needs Exchange 2007 or higher Used as a placeholder for the recipients from the MSG file itself or from the "internet" headers when this message is send outside an Exchange system The E-mail address The display name Returns the addresstype, null when not available Creates this object and sets all it's properties The E-mail address The display name The address type Class used to decompres compressed RTF Contains the prebuf string The lookup table used in the CRC32 calculation Calculates the CRC32 of the given bytes. The CRC32 calculation is similar to the standard one as demonstrated in RFC 1952, but with the inversion (before and after the calculation) ommited. The byte array to calculate CRC32 on The offset within buf at which the CRC32 calculation will start The number of bytes on which to calculate the CRC32 The CRC32 value Returns an unsigned 32-bit value from little-endian ordered bytes. Byte array from which byte values are taken Offset the offset within buf from which byte values are taken An unsigned 32-bit value as a lon Returns an unsigned 8-bit value from a byte array. A byte array from which byte value is taken The offset within buf from which byte value is taken An unsigned 8-bit value as an int Decompresses the RTF or throws an IllegalArgumentException if src does not contain valid compressed-RTF bytes. Src the compressed-RTF data bytes An array containing the decompressed byte This class is used to convert RTF to HTML Convert RTF to HTML The rtf string The status of a task The task has not yet started The task is in progress The task is complete The task is waiting on someone else The No type is set X500DN Ms mail SMTP Fax Professional office system Personal distribution list 1 Personal distribution list 2 An enumeration. This field MUST be present when the Type field of the RecipientFlags field is set to X500DN(0x1) and MUST NOT be present otherwise.This value specifies the display type of this address.Valid values for this field are specified in the following table. A messaging user A distribution list A forum, such as a bulletin board service or a public or shared folder An automated agent An Address Book object defined for a large group, such as helpdesk, accounting, coordinator, or department A private, personally administered distribution list An Address Book object known to be from a foreign or remote messaging system An integer representing the type of the object. It MUST be one of the values from the following table. A local mail user A distribution list A bulletinboard or public folder An automated mailbox An organiztional mailbox A private distribtion list A remote mail user A container A template One off user Search The PidLidAppointmentUnsendableRecipients property ([MS-OXPROPS] section 2.35) contains a list of unsendable attendees. This property is not required but SHOULD be set An integer that specifies the number of structures in the RecipientRow field If this flag is b'1', a different transport is responsible for delivery to this recipient(1). If this flag is b'1', the DisplayName (section 2.8.3.2) field is included If this flag is b'1', the EmailAddress (section 2.8.3.2) field is included. If this flag is b'1', this recipient (1) has a non-standard address type and the AddressType field is included. If this flag is b'1', the SimpleDisplayName field is included. If this flag is b'1', the value of the TransmittableDisplayName field is the same as the value of the DisplayName field. If this flag is b'1', the TransmittableDisplayName (section 2.8.3.2) field is included. If this flag is b'1', the associated string properties are in Unicode with a 2- byte terminating null character; if this flag is b'0', string properties are MBCS with a single terminating null character, in the code page sent to the server in the EcDoConnectEx method, as specified in [MS-OXCRPC] section 3.1.4.1, or the Connect request type 6, as specified in [MS-OXCMAPIHTTP] section 2.2.4.1. Returns all the recipient for the given The to return An array of RecipientRow structures, as specified in [MS-OXCDATA] section 2.8.3. Each structure specifies an unsendable attendee. The RowCount field specifies the number of structures contained in this field. For details about properties that can be set on RecipientRow structures for Calendar objects and meeting-related objects, see section 2.2.4.10. See https://msdn.microsoft.com/en-us/library/ee179606(v=exchg.80).aspx The or null when not available The The address prefix used The This field MUST be present when the field of the RecipientFlags field is set to X500DN (0x1) and MUST NOT be present otherwise. This value specifies the X500 DN of this recipient (1). A distinguished name (DN), in Teletex form, of an object that is in an address book. An X500 DN can be more limited in the size and number of relative distinguished names (RDNs) than a full DN. This field MUST be present when the field of the RecipientFlags field is set to PersonalDistributionList1 (0x6) or PersonalDistributionList2 (0x7). This field MUST NOT be present otherwise. This value specifies the size of the EntryID field. This field MUST be present when the field of the RecipientFlags field is set to PersonalDistributionList1 (0x6) or PersonalDistributionList2 (0x7). This field MUST NOT be present otherwise. The number of bytes in this field MUST be the same as specified in the EntryIdSize field. This array specifies the address book EntryID structure, as specified in section 2.2.5.2, of the distribution list. This field MUST be present when the field of the RecipientFlags field is set to PersonalDistributionList1 (0x6) or PersonalDistributionList2 (0x7). This field MUST NOT be present otherwise. This value specifies the size of the SearchKey field. This field is used when the field of the RecipientFlags field is set to PersonalDistributionList1 (0x6) or PersonalDistributionList2 (0x7). This field MUST NOT be present otherwise. The number of bytes in this field MUST be the same as what is specified in the SearchKeySize field and can be 0. This array specifies the search key of the distribution list. This field MUST be present when the field of the RecipientsFlags field is set to NoType (0x0) and the O flag of the RecipientsFlags field is set. This field MUST NOT be present otherwise. This string specifies the address type of the recipient (1). A null-terminated string. This field MUST be present when the E flag of the RecipientsFlags field is set and MUST NOT be present otherwise. This field MUST be specified in Unicode characters if the U flag of the RecipientsFlags field is set and in the 8-bit character set otherwise. This string specifies the email address of the recipient (1). This field MUST be present when the D flag of the RecipientsFlags field is set and MUST NOT be present otherwise. This field MUST be specified in Unicode characters if the U flag of the RecipientsFlags field is set and in the 8-bit character set otherwise. This string specifies the email address of the recipient (1). A null-terminated string. This field MUST be present when the I flag of the RecipientsFlags field is set and MUST NOT be present otherwise. This field MUST be specified in Unicode characters if the U flag of the RecipientsFlags field is set and in the 8-bit character set otherwise. This string specifies the email address of the recipient (1). This field MUST be present when the T flag of the RecipientsFlags field is set and MUST NOT be present otherwise. This field MUST be specified in Unicode characters if the U flag of the RecipientsFlags field is set and in the 8-bit character set otherwise. This string specifies the email address of the recipient (1). PropertyRow structures, as specified in section 2.8.1. The columns used for this row are those specified in RecipientProperties. Specifies that the recipient does support receiving rich text messages. Creates this object and sets all it's properties The The Set to true when the recipient in the supports RTF If this flag is b'1', the DisplayName (section 2.8.3.2) field is included If this flag is b'1', the EmailAddress (section 2.8.3.2) field is included. If this flag is b'1', this recipient (1) has a non-standard address type and the AddressType field is included. If this flag is b'1', the SimpleDisplayName field is included. If this flag is b'1', the value of the TransmittableDisplayName field is the same as the value of the DisplayName field. If this flag is b'1', the TransmittableDisplayName (section 2.8.3.2) field is included. If this flag is b'1', the associated string properties are in Unicode with a 2- byte terminating null character; if this flag is b'0', string properties are MBCS with a single terminating null character, in the code page sent to the server in the EcDoConnectEx method, as specified in [MS-OXCRPC] section 3.1.4.1, or the Connect request type 6, as specified in [MS-OXCMAPIHTTP] section 2.2.4.1. Interface to make Reader class COM exposable Extract the input msg file to the given output folder The msg file The folder where to extract the msg file When true then hyperlinks are generated for the To, CC, BCC and attachments Sets the culture that needs to be used to localize the output of this class String array containing the message body and its (inline) attachments Get the last know error message. When the string is empty there are no errors This class can be used to read an Outlook msg file and save the message body (in HTML or TEXT format) and all it's attachments to an output folder. Contains an error message when something goes wrong in the method. This message can be retreived with the GetErrorMessage. This way we keep .NET exceptions inside when this code is called from a COM language Used to keep track if we already did write an empty line Sets the culture that needs to be used to localize the output of this class. Default the current system culture is set. When there is no localization available the default will be used. This will be en-US. The name of the cultere eg. nl-NL Checks if the and is valid Raised when the or is null or empty Raised when the does not exists Raised when the does not exist Raised when the extension is not .msg or .eml This method reads the and when the stream is supported it will do the following:
- Extract the HTML, RTF (will be converted to html) or TEXT body (in these order)
- Puts a header (with the sender, to, cc, etc... (depends on the message type) on top of the body so it looks like if the object is printed from Outlook
- Reads all the attachents
And in the end returns everything to the output stream
The msg stream When true hyperlinks are generated for the To, CC, BCC and attachments
This method reads the and when the file is supported it will do the following:
- Extract the HTML, RTF (will be converted to html) or TEXT body (in these order)
- Puts a header (with the sender, to, cc, etc... (depends on the message type) on top of the body so it looks like if the object is printed from Outlook
- Reads all the attachents
And in the end writes everything to the given
The msg file The folder where to save the extracted msg file When true hyperlinks are generated for the To, CC, BCC and attachments
This method reads the and when the file is supported it will do the following:
- Extract the HTML, RTF (will be converted to html) or TEXT body (in these order)
- Puts a header (with the sender, to, cc, etc... (depends on the message type) on top of the body so it looks like if the object is printed from Outlook
- Reads all the attachents
And in the end writes everything to the given
The msg file The folder where to save the extracted msg file When true hyperlinks are generated for the To, CC, BCC and attachments Use this if you get the exception and want to force this method to use a specific to parse this MSG file. This is only used when the file is an MSG file String array containing the full path to the message body and its attachments Raised when the Microsoft Outlook message type is not supported Raised when the Microsoft Outlook signed message is invalid Raised when the or is null or empty Raised when the does not exists Raised when the does not exists
Extract a mail body in memory without saving data on the hard drive. The message as a stream When true then hyperlinks are generated for the To, CC, BCC and attachments Content type, e.g. text/html; charset=utf-8 When true, a text/html table with information of To, CC, BCC and attachments will be generated and inserted at the top of the text/html document Body as string (can be html code, ...) Extract a mail body in memory without saving data on the hard drive. The message as a stream When true then hyperlinks are generated for the To, CC, BCC and attachments Content type, e.g. text/html; charset=utf-8 When true, a text/html table with information of To, CC, BCC and attachments will be generated and inserted at the top of the text/html document Body as string (can be html code, ...) Method to replace the first occurence of the string with a string Returns the header information from the given e-mail (not Appointments, Tasks, Contacts and Sticky notes!!) The message When set to true then hyperlinks are generated for To, CC and BCC Returns the header information from the given e-mail (not Appointments, Tasks, Contacts and Sticky notes!!) The message Indicates that the message has an HTML body When set to true then hyperlinks are generated for To, CC and BCC A list with attachments Surrounds the String with HTML tags Writes the start of the header The object that is used to write a header When true then html will be written into the otherwise text will be written Writes a line into the header The object that is used to write a header When true then html will be written into the otherwise text will be written Used to pad the label size, ignored when is true The label text that needs to be written The text that needs to be written after the Writes a line into the header without Html encoding the The object that is used to write a header When true then html will be written into the otherwise text will be written Used to pad the label size, ignored when is true The label text that needs to be written The text that needs to be written after the Writes an empty header line Writes the end of the header The object that is used to write a header When true then html will be written into the otherwise text will be written Writes the body of the MSG E-mail to html or text and extracts all the attachments. The result is returned as a List of strings The folder where we need to write the output When true then hyperlinks are generated for the To, CC, BCC and attachments Writes the body of the MSG E-mail to html or text and extracts all the attachments. The result is returned as a List of MemoryStream The object When true then hyperlinks are generated for the To, CC, BCC and attachments Writes the body of the EML E-mail to html or text and extracts all the attachments. The result is returned as a List of strings The object The folder where we need to write the output When true then hyperlinks are generated for the To, CC, BCC and attachments Writes the body of the MSG Appointment to html or text and extracts all the attachments. The result is returned as a List of strings The folder where we need to write the output When true then hyperlinks are generated for the To, CC, BCC and attachments Writes the task body of the MSG Task to html or text and extracts all the attachments. The result is return as a List of strings The folder where we need to write the output When true then hyperlinks are generated attachments Writes the body of the MSG Contact to html or text and extracts all the attachments. The result is return as a List of strings The folder where we need to write the output When true then hyperlinks are generated for the To, CC, BCC and attachments Writes the body of the MSG StickyNote to html or text and extracts all the attachments. The result is return as a List of strings The folder where we need to write the output This method reads the body of a message object and returns it as an html body The object Returns true when an html body is returned, false when the body is text based True when the e-Mail has an HTML body This function pre processes the Outlook MSG object, it tries to find the html (or text) body and reads all the available objects. When an attachment is inline it tries to map this attachment to the html body part when this is available The object When true then hyperlinks are generated for the To, CC, BCC and attachments (when there is an html body) The outputfolder where alle extracted files need to be written Returns the filename for the html or text body Returns true when the object did contain an HTML body Returns the html or text body Returns the filename of the contact photo. This field will only return a value when the object is a type and the contains an object that has the set to true, otherwise this field will always be null Returns a list of names with the found attachment Returns all the files that are generated after pre processing the object This function pre processes the EML object, it tries to find the html (or text) body and reads all the available attachment objects. When an attachment is inline it tries to map this attachment to the html body part when this is available The object When true then hyperlinks are generated for the To, CC, BCC and attachments (when there is an html body) Returns true when the object did contain an HTML body Returns the html or text body Returns a list of names with the found attachment Returns all the attachments as a list of streams Check for Valid Attachment This function pre processes the EML object, it tries to find the html (or text) body and reads all the available attachment objects. When an attachment is inline it tries to map this attachment to the html body part when this is available The object When true then hyperlinks are generated for the To, CC, BCC and attachments (when there is an html body) The output folder where all extracted files need to be written Returns the filename for the html or text body Returns true when the object did contain an HTML body Returns the html or text body Returns a list of names with the found attachment Returns all the files that are generated after pre processing the object Get the last know error message. When the string is empty there are no errors Inject an Outlook style header into the top of the html Content type Rtf attribute attribute's name value Initialize instance RTF attribute list Clone this object Rtf boder style Binary data buffer Current contains validate bytes byte array Clear object's data Reset current position without clear buffer Set of get byte at special index which starts with 0 Validate bytes count Add a byte byte data Add bytes bytes Add bytes Bytes Start index Length Get validate bytes array bytes array Convert bytes data to a string string encoding string data Fix inner buffer so it can fit to new size of buffer new size Rtf color table Get color at special index Check color value exist when add color to list Count the items in the color table Get color at special index , if index out of range , return default color index default value color value Add color to list New color value Remove special color color value Get color index color index , if not found return -1 Clear Write Clone the object The RTF keywords as constants RTF Document format information If this instance is created by Clone , return the parent instance Display left border line Display top border line Display right border line Display bottom border line Border line color Border line width Border style Border thicknes Border spacing Word wrap Standard tab width indent of first line in a paragraph Indent of wholly paragraph character spacing line spacing Current line spacing is multiple extractly line spacing. Spacing before paragrah Spacing after paragraph Text alignment Page break Nest level in native rtf document Font name Font size Bold style Italic style Underline style Strickout style Hidden text Text color Back color Link Superscript Subscript List override id No wrap in word Clone instance new instance Document information Document title Document subject Document author Document manager Document company Document operator Document category Document keywords Document comment Document doccomm Document base Total edit minutes Document version Document number of pages Document number of words Document number of characters , include whitespace Document number of characters , exclude white space Document inner id Document Creation time Document modified time Document last print time Document last backup time get information specify name name value set information specify name name value RTF document writer Base writer Information about this Rtf document Rtf font table Rtf color table System collectiong document's information , maby generating font table and color table , not writting content. How many nested groups do we have When debug mode is turned on, raw information about the Rtf file is written Initialize instance Initialize instance with a text writer Initialize instance from a file Initialize instance from a stream Open Rtf file from a textwriter Open Rtf file from a file Write rtf keyword keyword Write rtf keyword Keyword is external Write raw text Write the style that is used by the borderline Write the start of the document Write the end of the document Write start from header Write end from header Write start from footer Write end from footer Write start from paragraph Write end of paragraph format end write paragraph Write plain text text Write font format font Start write of formatted text format This function must assort with WriteEndString End writing of a formatted string. WriteStartString and WriteString have to be called before this method Write formatted string. Call WriteStartString before this method text format End write string Start write of bookmark bookmark name End write of bookmark bookmark name Write a line break Write image Image Pixel width Pixel height Image binary data Rtf bookmark Name RTF Document This type is the root of RTF Dom tree structure Progress event default font name text encoding of associate font The default rtf encoding Text encoding of current font initialize instance Following characters Leading characters Text encoding Font table Color table Document information Document generator Paper width,unit twips Paper height,unit twips Left margin,unit twips Top margin,unit twips Right margin,unit twips Bottom margin,unit twips Landscape Header's distance from the top of the page( Twips) Footer's distance from the bottom of the page( twips) Client area width,unit twips Convert "Times new roman" to default font when parse rtf content Default row's height, in twips. HTML content in RTF Raise progress event Progress max value Progress value Progress message User cancel Load a rtf file and parse file name Load a rtf document from a stream and parse content stream Load a rtf document from a text reader and parse content text reader Load a rtf document from a string in rtf format and parse content text Parse an RTF element Fixes invalid paragraphs Fixes invalid dom elements Get the last element Complete the paragraph Add content element Convert a hex string to a byte array hex string byte array Combine tables The parent element Create table table rows new table Read and ignore data , until just the end of the current group, preserve the end. Read font table Read color table Read document information Read datetime reader datetime value Read a rtf emb object reader format rtf emb object instance Read field Read the following plain text in the current level RTF reader whether read the text in the sub level Read the following plain text in the current level RTF reader whether read the text in the sub level text Read embedded Html content from rtf RTF dom element (this is the most base element type) Native level in RTF document RTF native attribute child elements list The document which owned this element Parent element Whether element is locked , if element is lock , it can not append chidl element Append child element child element index of element Set attribute name value RTF element's list Get the last element in the list Get the element at special index index element Add element element index Insert element special index element Get the index of special element that starts with 0. element index , if not find element , then return -1 Remove element element Return element array array Document field element Method Instructions Result Rtf dom header Header style If the header has a content element Footer style If the footer has a content element Image element Id Data Data as base64 format Scale rate at the X coordinate, in percent unit. Scale rate at the Y coordinate , in percent unit. Desired width Desired height Width Height Picture type format Rtf line element initialize instance RTF Dom object Custom attributes Type Class name Name Content as byte array Content type Width Height Scaling X factor Scaling Y factor Result Rtf dom page break Initialize this instance Rtf paragraph element If it is generated from a template Format Rtf shape element Left position Top position Width Height Z index Shape id Ext attribute Rtf shape group External attributes Rtf table column list Dom table cell Row span Col span Left padding Left padding in fact Top padding Top padding in fact Right padding Right padding in fact Bottom padding Bottom padding in fact Vertial alignment Format Allow multiline Left position Width Height Cell merged by another cell which this property specified Initialize instance Rtf table column Width Table row Cell settings Format Document level row index Is the last row Is header row Height Padding left Top padding Right padding Bottom padding Width Rtf text element Format Text Inner text Initialize instance RTF element container Name Text alignment left center right justify Source of the picture is an EMF (enhanced metafile). Source of the picture is a PNG. Source of the picture is a JPEG. ource of the picture is QuickDraw. Source of the picture is an OS/2 metafile. The N argument identifies the metafile type. The N values are described in the \pmmetafile table further on in this section. Source of the picture is a Windows metafile. The N argument identifies the metafile type (the default type is 1). Source of the picture is a Windows device-independent bitmap. The N argument identifies the bitmap type, which must equal 0. The information to be included in RTF from a Windows device-independent bitmap is the concatenation of the BITMAPINFO structure followed by the actual pixel data. Source of the picture is a Windows device-dependent bitmap. The N argument identifies the bitmap type (must equal 0). The information to be included in RTF from a Windows device-dependent bitmap is the result of the GetBitmapBits function. Rtf token type Rtf dom field method root keyword, etc /marginl external keyword node , etc. /*/keyword control plain text group , etc . { } nothing Rtf vertical alignment top alignment middle alignment bottom alignment Arabic (1, 2, 3) Uppercase Roman numeral (I, II, III) Lowercase Roman numeral (i, ii, iii) Uppercase letter (A, B, C) Lowercase letter (a, b, c) Ordinal number (1st, 2nd, 3rd) Cardinal text number (One, Two Three) Ordinal text number (First, Second, Third) Kanji numbering without the digit character (*dbnum1) Kanji numbering with the digit character (*dbnum2) 46 phonetic double_byte katakana characters (*aiueo*dbchar) 46 phonetic double_byte katakana characters (*iroha*dbchar) 46 phonetic katakana characters in "aiueo" order (*aiueo) 46 phonetic katakana characters in "iroha" order (*iroha) Double_byte character Single_byte character Kanji numbering 3 (*dbnum3) Kanji numbering 4 (*dbnum4) Circle numbering (*circlenum) Double_byte Arabic numbering Arabic with leading zero (01, 02, 03, ..., 10, 11) Bullet (no number at all) Korean numbering 2 (*ganada) Korean numbering 1 (*chosung) Chinese numbering 1 (*gb1) Chinese numbering 2 (*gb2) Chinese numbering 3 (*gb3) Chinese numbering 4 (*gb4) Chinese Zodiac numbering 1 (* zodiac1) Chinese Zodiac numbering 2 (* zodiac2) Chinese Zodiac numbering 3 (* zodiac3) Taiwanese double_byte numbering 1 Taiwanese double_byte numbering 2 Taiwanese double_byte numbering 3 Taiwanese double_byte numbering 4 Chinese double_byte numbering 1 Chinese double_byte numbering 2 Chinese double_byte numbering 3 Chinese double_byte numbering 4 Korean double_byte numbering 1 Korean double_byte numbering 2 Korean double_byte numbering 3 Korean double_byte numbering 4 Hebrew non_standard decimal Arabic Alif Ba Tah Hebrew Biblical standard Arabic Abjad style No number Font table Get font information special index Get font object special name font name font object Get font object special font index Font index font object Add font Font name Add font font name Add font special font index font name Add font Font object Remove font font name Get font index special font name font name font index Write font table rtf rtf text writer Clone object new object Rtf font information Font index font name Charset Encoding Initialize instance font index font name Internal encoding for ansi Rtf raw lay Checks if Uc value count is greater then zero True when greater Rtf lex Initialize instance reader Peek to see what kind of token we have TokenType Read next token token Parse keyword from token Parse text after char Read chars until another non white space char is found List override count Internal Id Rtf list table Rtf list table item RTF parser node parent node raw document which owner this node Keyword Whether this node has parameters Paramter value Child nodes Index node type Previous node in parent nodes list Next node in parent nodes list initialize instance Write to rtf document RTF text writer RTF node group child node list initialize instance child node list first child node Get all child node deeply contains group type node child nodes list Write content to rtf document RTF text writer Search child node with special keyword Special keyword Whether search deeply Found node Append child node node Remove child node Insert node index node RTF node list Get node by index Get node by keyword Get node by type Get the node text Get node's parameter value special keyword, if it is not found , return default value. Keyword Default value Parameter value Detect whether the node exist in this list keyword True or false Get index of node in this list node index , if node does no in this list , return -1 Add node list range A node list Add node Node Remove node Node Insert node Index Node Progress event handler type sender event arguments Progress event arguments Progress max value Current value Progress message Cancel operation RTF raw document Text encoding for current associated font Color table Text encoding for current font font table document information The owner of this document No parent node color table font table Document information Text encoding Current text encoding Initialize instance Read font table Read color table Read document information Read date and time from node Load rtf from string Text in rtf format Load rtf from file file name Load rtf from text reader Load rtf from rtf reader RTF text reader Write rtf RTF writer Save rtf to a file file name Save rtf to a stream stream Rtf reader Current token The Current token's type Current keyword If current token has a parameter Current parameter Current token is the first token in owner group Lost token Total of this object handle tokens When set to true then we are parsing an RTF unicode high - low surrogate When is set to true then this will containt the high surrogate value when we are parsing the low surrogate value Initialize instance Initialize instance from file Initialize instance from stream Initialize instance from text reader Dispose this object Load rtf from file spcial file name is operation successful Load rtf from reader text reader is operation successful Load rtf from string RTF text is operation successful Close the inner reader Get next token type Read token token read Read and ignore data , until just the end of the current group, preserve the end. Name of the attribute Value of the attribute Add's an item to the list and returns the index Removes an item from the list Rtf plain text container Owner document Check if this container has some text text value Initialize instance owner document Append text content Accept rtf token RTF token Is accept it? Clear value Check if buffer still contains any text Rtf token type Type Key True when the token has a param Param value Parent token True when the token contains text Some utility functions Checks if the root element has content elemens True when there are content elements Rtw writer, use it to write a new Rtf document Hex characters Inner text writer Text encoding current line head Current position Whether output rtf code with indent style In rtf formation , recommend do not use indent . this option just to debugger , in software development , use this option can genereate indented rtf code friendly to read, but after debug , recommend clear this option and set this attribute = false. String used to indent Level of nested groups Initialize instance text writer Initialize instance File name Write completed group wich one keyword keyword Begin write group End write group Write raw text text Write keyword keyword Write keyword keyword True if it is an external keyword Write plain text Text Write plain text, with the option to automaticly add a white space character Text Write a white space automatic Write binary data Binary data Write a byte byte