Click or drag to resize
MimeKit

MultipartReport Class

A multipart/report MIME entity.
Inheritance Hierarchy
SystemObject
  MimeKitMimeEntity
    MimeKitMultipart
      MimeKitMultipartReport

Namespace: MimeKit
Assembly: MimeKit (in MimeKit.dll) Version: 4.7.1
Syntax
C#
public class MultipartReport : Multipart, 
	IMultipartReport, IMultipart, IMimeEntity, IDisposable, ICollection<MimeEntity>, 
	IEnumerable<MimeEntity>, IEnumerable, IList<MimeEntity>

The MultipartReport type exposes the following members.

Constructors
 NameDescription
Public methodMultipartReport(MimeEntityConstructorArgs) Initialize a new instance of the MultipartReport class.
Public methodMultipartReport(String) Initialize a new instance of the MultipartReport class.
Public methodMultipartReport(String, Object) Initialize a new instance of the MultipartReport class.
Top
Properties
 NameDescription
Public propertyBoundary Get or set the boundary.
(Inherited from Multipart)
Public propertyContentBase Get or set the base content URI.
(Inherited from MimeEntity)
Public propertyContentDisposition Get or set the content disposition.
(Inherited from MimeEntity)
Public propertyContentId Get or set the Content-Id.
(Inherited from MimeEntity)
Public propertyContentLocation Get or set the content location.
(Inherited from MimeEntity)
Public propertyContentType Get the type of the content.
(Inherited from MimeEntity)
Public propertyCount Get the number of parts in the multipart.
(Inherited from Multipart)
Public propertyEpilogue Get or set the epilogue.
(Inherited from Multipart)
Public propertyHeaders Get the list of headers.
(Inherited from MimeEntity)
Public propertyIsAttachment Get a value indicating whether this MimePart is an attachment.
(Inherited from MimeEntity)
Public propertyIsReadOnly Get a value indicating whether this instance is read only.
(Inherited from Multipart)
Public propertyItem Get or set the MimeEntity at the specified index.
(Inherited from Multipart)
Public propertyPreamble Get or set the preamble.
(Inherited from Multipart)
Public propertyCode exampleReportType Get or set the type of the report.
Top
Methods
 NameDescription
Public methodAccept Dispatches to the specific visit method for this MIME entity.
(Overrides MultipartAccept(MimeVisitor))
Public methodAdd Add an entity to the multipart.
(Inherited from Multipart)
Public methodClear Clear a multipart.
(Inherited from Multipart)
Public methodClear(Boolean) Clear a multipart.
(Inherited from Multipart)
Public methodContains Check if the Multipart contains the specified entity.
(Inherited from Multipart)
Public methodCopyTo Copy all of the entities in the Multipart to the specified array.
(Inherited from Multipart)
Public methodDispose Releases all resources used by the MimeEntity object.
(Inherited from MimeEntity)
Protected methodDispose(Boolean) Release the unmanaged resources used by the Multipart and optionally releases the managed resources.
(Inherited from Multipart)
Public methodEquals
(Inherited from Object)
Protected methodFinalize Releases unmanaged resources and performs other cleanup operations before the MimeEntity is reclaimed by garbage collection.
(Inherited from MimeEntity)
Public methodGetEnumerator Get the enumerator for the children of the Multipart.
(Inherited from Multipart)
Public methodGetHashCode
(Inherited from Object)
Public methodGetType
(Inherited from Object)
Public methodIndexOf Get the index of an entity.
(Inherited from Multipart)
Public methodInsert Insert an entity into the Multipart at the specified index.
(Inherited from Multipart)
Protected methodMemberwiseClone
(Inherited from Object)
Protected methodOnHeadersChanged Called when the headers change in some way.
(Inherited from MimeEntity)
Public methodPrepare Prepare the MIME entity for transport using the specified encoding constraints.
(Inherited from Multipart)
Public methodRemove Remove an entity from the multipart.
(Inherited from Multipart)
Public methodRemoveAt Remove an entity from the Multipart at the specified index.
(Inherited from Multipart)
Protected methodRemoveHeader Remove a header by name.
(Inherited from MimeEntity)
Protected methodSetHeader(String, Byte) Set the value of a header using the raw value.
(Inherited from MimeEntity)
Protected methodSetHeader(String, String) Set the value of a header.
(Inherited from MimeEntity)
Public methodToString Return a String that represents the MimeEntity for debugging purposes.
(Inherited from MimeEntity)
Public methodTryGetValue Get the preferred message body if it exists.
(Inherited from Multipart)
Protected methodTryInit Tries to use the given object to initialize the appropriate property.
(Inherited from MimeEntity)
Public methodWriteTo(Stream, CancellationToken) Write the MimeEntity to the specified output stream.
(Inherited from MimeEntity)
Public methodWriteTo(String, CancellationToken) Write the MimeEntity to the specified file.
(Inherited from MimeEntity)
Public methodWriteTo(FormatOptions, Stream, CancellationToken) Write the MimeEntity to the specified output stream.
(Inherited from MimeEntity)
Public methodWriteTo(FormatOptions, String, CancellationToken) Write the MimeEntity to the specified file.
(Inherited from MimeEntity)
Public methodWriteTo(Stream, Boolean, CancellationToken) Write the MimeEntity to the specified output stream.
(Inherited from MimeEntity)
Public methodWriteTo(String, Boolean, CancellationToken) Write the MimeEntity to the specified file.
(Inherited from MimeEntity)
Public methodWriteTo(FormatOptions, String, Boolean, CancellationToken) Write the MimeEntity to the specified file.
(Inherited from MimeEntity)
Public methodWriteTo(FormatOptions, Stream, Boolean, CancellationToken) Write the Multipart to the specified output stream.
(Inherited from Multipart)
Public methodWriteToAsync(Stream, CancellationToken) Asynchronously write the MimeEntity to the specified output stream.
(Inherited from MimeEntity)
Public methodWriteToAsync(String, CancellationToken) Asynchronously write the MimeEntity to the specified file.
(Inherited from MimeEntity)
Public methodWriteToAsync(FormatOptions, Stream, CancellationToken) Asynchronously write the MimeEntity to the specified output stream.
(Inherited from MimeEntity)
Public methodWriteToAsync(FormatOptions, String, CancellationToken) Asynchronously write the MimeEntity to the specified file.
(Inherited from MimeEntity)
Public methodWriteToAsync(Stream, Boolean, CancellationToken) Asynchronously write the MimeEntity to the specified output stream.
(Inherited from MimeEntity)
Public methodWriteToAsync(String, Boolean, CancellationToken) Asynchronously write the MimeEntity to the specified file.
(Inherited from MimeEntity)
Public methodWriteToAsync(FormatOptions, String, Boolean, CancellationToken) Asynchronously write the MimeEntity to the specified file.
(Inherited from MimeEntity)
Public methodWriteToAsync(FormatOptions, Stream, Boolean, CancellationToken) Asynchronously write the Multipart to the specified output stream.
(Inherited from Multipart)
Top
Remarks
A multipart/related MIME entity is a general container part for electronic mail reports of any kind.
Example
C#
public void ProcessDeliveryStatusNotification (MimeMessage message)
{
    var report = message.Body as MultipartReport;

    if (report == null || report.ReportType == null || !report.ReportType.Equals ("delivery-status", StringComparison.OrdinalIgnoreCase)) {
        // this is not a delivery status notification message...
        return;
    }

    // process the report
    foreach (var mds in report.OfType<MessageDeliveryStatus> ()) {
        // process the status groups - each status group represents a different recipient

        // The first status group contains information about the message
        var envelopeId = mds.StatusGroups[0]["Original-Envelope-Id"];

        // all of the other status groups contain per-recipient information
        for (int i = 1; i < mds.StatusGroups.Length; i++) {
            var recipient = mds.StatusGroups[i]["Original-Recipient"];
            var action = mds.StatusGroups[i]["Action"];

            if (recipient == null)
                recipient = mds.StatusGroups[i]["Final-Recipient"];

            // the recipient string should be in the form: "rfc822;user@domain.com"
            var index = recipient.IndexOf (';');
            var address = recipient.Substring (index + 1);

            switch (action) {
            case "failed":
                Console.WriteLine ("Delivery of message {0} failed for {1}", envelopeId, address);
                break;
            case "delayed":
                Console.WriteLine ("Delivery of message {0} has been delayed for {1}", envelopeId, address);
                break;
            case "delivered":
                Console.WriteLine ("Delivery of message {0} has been delivered to {1}", envelopeId, address);
                break;
            case "relayed":
                Console.WriteLine ("Delivery of message {0} has been relayed for {1}", envelopeId, address);
                break;
            case "expanded":
                Console.WriteLine ("Delivery of message {0} has been delivered to {1} and relayed to the the expanded recipients", envelopeId, address);
                break;
            }
        }
    }
}
See Also