Click or drag to resize
MimeKit

MessageDeliveryStatus Class

A message delivery status MIME part.
Inheritance Hierarchy
SystemObject
  MimeKitMimeEntity
    MimeKitMimePart
      MimeKitMessageDeliveryStatus

Namespace: MimeKit
Assembly: MimeKit (in MimeKit.dll) Version: 4.3.0
Syntax
C#
public class MessageDeliveryStatus : MimePart

The MessageDeliveryStatus type exposes the following members.

Constructors
 NameDescription
Public methodMessageDeliveryStatus Initialize a new instance of the MessageDeliveryStatus class.
Public methodMessageDeliveryStatus(MimeEntityConstructorArgs) Initialize a new instance of the MessageDeliveryStatus class.
Top
Properties
 NameDescription
Public propertyCode exampleContent Get or set the MIME content.
(Inherited from MimePart)
Public propertyContentBase Get or set the base content URI.
(Inherited from MimeEntity)
Public propertyContentDescription Get or set the description of the content if available.
(Inherited from MimePart)
Public propertyContentDisposition Get or set the content disposition.
(Inherited from MimeEntity)
Public propertyContentDuration Get or set the duration of the content if available.
(Inherited from MimePart)
Public propertyContentId Get or set the Content-Id.
(Inherited from MimeEntity)
Public propertyContentLocation Get or set the content location.
(Inherited from MimeEntity)
Public propertyContentMd5 Get or set the md5sum of the content.
(Inherited from MimePart)
Public propertyContentTransferEncoding Get or set the content transfer encoding.
(Inherited from MimePart)
Public propertyContentType Get the type of the content.
(Inherited from MimeEntity)
Public propertyCode exampleFileName Get or set the name of the file.
(Inherited from MimePart)
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 propertyCode exampleStatusGroups Get the groups of delivery status fields.
Top
Methods
 NameDescription
Public methodAccept Dispatches to the specific visit method for this MIME entity.
(Overrides MimePartAccept(MimeVisitor))
Public methodComputeContentMd5 Compute the MD5 checksum of the content.
(Inherited from MimePart)
Public methodDispose Releases all resources used by the MimeEntity object.
(Inherited from MimeEntity)
Protected methodDispose(Boolean) Releases the unmanaged resources used by the MimePart and optionally releases the managed resources.
(Inherited from MimePart)
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 methodGetBestEncoding(EncodingConstraint, CancellationToken) Calculate the most efficient content encoding given the specified constraint.
(Inherited from MimePart)
Public methodGetBestEncoding(EncodingConstraint, Int32, CancellationToken) Calculate the most efficient content encoding given the specified constraint.
(Inherited from MimePart)
Public methodGetHashCode
(Inherited from Object)
Public methodGetType
(Inherited from Object)
Protected methodMemberwiseClone
(Inherited from Object)
Protected methodOnHeadersChanged Called when the headers change in some way.
(Inherited from MimePart)
Public methodPrepare Prepare the MIME entity for transport using the specified encoding constraints.
(Inherited from MimePart)
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)
Protected methodTryInit Tries to use the given object to initialize the appropriate property.
(Inherited from MimeEntity)
Public methodVerifyContentMd5 Verify the Content-Md5 value against an independently computed md5sum.
(Inherited from MimePart)
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 MimePart to the specified output stream.
(Inherited from MimePart)
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 MimePart to the specified output stream.
(Inherited from MimePart)
Top
Remarks

A message delivery status MIME part is a machine readable notification denoting the delivery status of a message and has a MIME-type of message/delivery-status.

For more information, see rfc3464.

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