проблема с pop3 при попытке загрузить вложения -C#

Некоторое время я искал высоко и низко, чтобы иметь простой в использовании фрагмент кода, чтобы мой проект С# загружал вложение текстового файла по электронной почте из gmail. Я взглянул на openpop.net lib, это единственная многообещающая библиотека, которую я вижу! Может ли кто-нибудь показать мне код, который выполняет эту работу? Я посмотрел на примеры других людей с openpop, но API в их примере был другим, может быть, более старой версией? Заранее спасибо за помощь!


person Sovr Sov    schedule 17.08.2014    source источник


Ответы (1)


Вот как вы могли бы сделать это, используя мою библиотеку MailKit, которая намного эффективнее, чем OpenPOP.NET:

using System;
using System.Linq;

using MailKit.Net.Pop3;
using MailKit;
using MimeKit;

namespace TestClient {
    class Program
    {
        public static void Main (string[] args)
        {
            using (var client = new Pop3Client ()) {
                client.Connect ("pop.gmail.com", 995, true);

                // Note: since we don't have an OAuth2 token, disable
                // the XOAUTH2 authentication mechanism.
                client.AuthenticationMechanisms.Remove ("XOAUTH2");

                client.Authenticate ("[email protected]", "password");

                int count = client.GetMessageCount ();
                int unknown = 0;

                for (int i = 0; i < count; i++) {
                    var message = client.GetMessage (i);

                    foreach (var attachment in message.Attachments.OfType<TextPart> ()) {
                        var fileName = attachment.FileName ?? string.Format ("unknown{0}.txt", ++unknown);

                        // Save the content of the attachment in whatever
                        // charset it is in.
                        using (var stream = File.Create (fileName))
                            attachment.ContentObject.DecodeTo (stream);
                    }
                }

                client.Disconnect (true);
            }
        }
    }
}

Если у вас много сообщений в вашей учетной записи GMail и/или вы просто хотите загружать сообщения с еще большей эффективностью, GMail поддерживает расширение PIPELINING, которым может воспользоваться MailKit.

Вместо того, чтобы загружать по одному сообщению за раз, вы можете использовать GetMessages() для пакетного запроса диапазона сообщений, которые будут использовать расширение PIPELINING, которое значительно снижает задержку и, таким образом, может значительно сократить время загрузки.

person jstedfast    schedule 18.08.2014