Как я могу узнать, какое электронное письмо является ответом на другое электронное письмо на C #?

Я разработал веб-приложение, в котором есть функция для ввода примечания для конкретного заказа на продажу.

Когда примечание вводится клиентом или руководителем службы поддержки клиентов, соответствующему лицу отправляется уведомление по электронной почте (уведомление по электронной почте отправляется с использованием объектов SmtpClient и MailMessage в C #).

using (MailMessage objEmail = new MailMessage())
{
    Guid objGuid = new Guid();
    objGuid = Guid.NewGuid();
    String MessageID = "<" + objGuid.ToString() + ">";
    objEmail.Body = messagebody.ToString();
    objEmail.From = new MailAddress(sFrmadd, sFrmname);
    objEmail.Headers.Add("Message-Id", MessageID);
    objEmail.IsBodyHtml = true;
    objEmail.ReplyTo = new MailAddress("replyto@email.com");                    
    objEmail.Subject = sSubject;                    
    objEmail.To.Add(new MailAddress(sToadd));

    SmtpClient objSmtp = new SmtpClient();
    objSmtp.Credentials = new NetworkCredential("mynetworkcredential", "mypassword");
    objSmtp.DeliveryMethod = SmtpDeliveryMethod.Network;
    objSmtp.EnableSsl = true;
    objSmtp.Host = "myhostname";
    objSmtp.Port = 25;
    objSmtp.Timeout = 3 * 3600;

    objSmtp.Send(objEmail);                    
}

Я устанавливаю Guid в качестве идентификатора сообщения отправляемого сообщения в заголовках сообщений.

Все это прекрасно работает.

Теперь я хочу разработать функциональность, позволяющую сторонам отвечать на уведомления по электронной почте из их соответствующих почтовых ящиков.

И я хочу регистрировать ответы в примечаниях к тому же заказу на продажу (для которого сторона получила уведомление).

Я использую OpenPop.dll для чтения почты для получения ответов на уведомления.

/// <summary>
/// Fetch all messages from a POP3 server
/// </summary>
/// <param name="hostname">Hostname of the server. For example: pop3.live.com</param>
/// <param name="port">Host port to connect to. Normally: 110 for plain POP3, 995 for SSL POP3</param>
/// <param name="useSsl">Whether or not to use SSL to connect to server</param>
/// <param name="username">Username of the user on the server</param>
/// <param name="password">Password of the user on the server</param>
/// <returns>All Messages on the POP3 server</returns>
public static List<Message> FetchAllMessages(string hostname, int port, bool useSsl, string username, string password)
{
    // The client disconnects from the server when being disposed
    using (Pop3Client client = new Pop3Client())
    {
        // Connect to the server
        client.Connect(hostname, port, useSsl);

        // Authenticate ourselves towards the server
        client.Authenticate(username, password);

        // Get the number of messages in the inbox
        int messageCount = client.GetMessageCount();

        // We want to download all messages
        List<Message> allMessages = new List<Message>(messageCount);

        // Messages are numbered in the interval: [1, messageCount]
        // Ergo: message numbers are 1-based.
        for (int i = 1; i <= messageCount; i++)
        {
            allMessages.Add(client.GetMessage(i));
        }

        // Now return the fetched messages
        return allMessages;
    }
}

С помощью вышеуказанной функции я могу читать все электронные письма из моей (скрытой) учетной записи. Но я не могу найти Идентификатор сообщения в заголовке In-reply-to писем.

Я не знаю, что делаю не так.

5
задан Devraj Gadhavi 4 January 2014 в 05:35
поделиться