MailBee.NET Objects 7.2

DsnAttachment.Items Property

Gets the list of all fields in the DSN attachment.

public System.Collections.Specialized.StringDictionary Items {get;}

Property Value

The key-value string collection of all the fields in the DSN attachment.

Remarks

This collection is alternative to other properties of DsnAttachment class. Other properties (like ArrivalDate) return the corresponding value in parsed form. Items property provides access to all the fields as they are specified in the DSN source. It can also be used to extract those values which are not available through other properties (for instance, vendor-specific properties which are not defined by RFC 1894).

Example

This code sample shows how to operate with parsed DSN data.

[C#]
// To use the code below, import these namespaces at the top of your code.
using System;
using System.IO;
using MailBee.Mime;
using MailBee.BounceMail;

class Sample
{
    static void Main(string[] args)
    {
        // Load DSN templates database from file.
        DeliveryStatusParser parser = new DeliveryStatusParser(@"C:\Temp\BounceDatabase\all.xml", true);

        string[] files = Directory.GetFiles(@"C:\Temp\IncomingMail", "*.eml");
        MailMessage msg = new MailMessage();

        // Process all .EML files in the folder.
        foreach (string file in files)
        {
            msg.LoadMessage(file);
            Result result = parser.Process(msg);

            Console.WriteLine("\r\nProcessed e-mail: " + file);

            if (result == null || result.DsnStructure == null)
            {
                Console.WriteLine("------------------------------------------------------");
                Console.WriteLine("This message doesn't have DSN message part.");
                Console.WriteLine("------------------------------------------------------");
            }
            else
            {
                Console.WriteLine("------------------ DSN part as text ------------------");
                Console.WriteLine(result.DsnStructure.ToString());
                Console.WriteLine("------------- DSN header as StringDictionary ---------");
                foreach (string key in result.DsnStructure.Items.Keys)
                {
                    Console.WriteLine("DSN item: {0} = {1}", key, result.DsnStructure.Items[key]);
                }
                Console.WriteLine("------------------------------------------------------");

                foreach (RecipientStatus res in result.Recipients)
                {
                    if (res.DsnInfo != null)
                    {
                        Console.WriteLine("DSN subpart for: {0} e-mail", res.EmailAddress);
                        Console.WriteLine("---------------- DSN subpart as text -----------------");
                        Console.WriteLine(res.DsnInfo.ToString());
                        Console.WriteLine("------------- DSN header as StringDictionary ---------");
                        foreach (string key in res.DsnInfo.Items.Keys)
                        {
                            Console.WriteLine("DSN subpart item: {0} = {1}", key, res.DsnInfo.Items[key]);
                        }
                        Console.WriteLine("------------------------------------------------------");
                    }
                }
            }
        }
    }
}
[Visual Basic]
' To use the code below, import these namespaces at the top of your code.
Imports System.IO
Imports Microsoft.VisualBasic
Imports MailBee.Mime
Imports MailBee.BounceMail

Class Sample
    Shared Sub Main(ByVal args() As String)
        ' Load DSN templates database from file.
        Dim parser As DeliveryStatusParser = New DeliveryStatusParser("C:\Temp\BounceDatabase\all.xml", True)

        Dim files() As String = Directory.GetFiles("C:\Temp\IncomingMail", "*.eml")
        Dim msg As MailMessage = New MailMessage

        ' Process all .EML files in the folder.
        For Each file As String In files
            msg.LoadMessage(file)
            Dim result As Result = parser.Process(msg)

            Console.WriteLine(ControlChars.CrLf & "Processed e-mail: " & file)

            If result Is Nothing Or result.DsnStructure Is Nothing Then
                Console.WriteLine("------------------------------------------------------")
                Console.WriteLine("This message doesn't have DSN message part.")
                Console.WriteLine("------------------------------------------------------")
            Else
                Console.WriteLine("------------------ DSN part as text ------------------")
                Console.WriteLine(result.DsnStructure.ToString())
                Console.WriteLine("------------- DSN header as StringDictionary ---------")
                For Each key As String In result.DsnStructure.Items.Keys
                    Console.WriteLine("DSN item: {0} = {1}", key, result.DsnStructure.Items(key))
                Next
                Console.WriteLine("------------------------------------------------------")

                For Each res As RecipientStatus In result.Recipients
                    If Not res.DsnInfo Is Nothing Then
                        Console.WriteLine("DSN subpart for: {0} e-mail", res.EmailAddress)
                        Console.WriteLine("---------------- DSN subpart as text -----------------")
                        Console.WriteLine(res.DsnInfo.ToString())
                        Console.WriteLine("------------- DSN header as StringDictionary ---------")
                        For Each key As String In res.DsnInfo.Items.Keys
                            Console.WriteLine("DSN subpart item: {0} = {1}", key, res.DsnInfo.Items(key))
                        Next
                        Console.WriteLine("------------------------------------------------------")
                    End If
                Next
            End If
        Next
    End Sub
End Class

See Also

DsnAttachment Class | MailBee.BounceMail Namespace