c# - 尝试下载附件的 pop3 问题-C#

标签 c# gmail pop3 openpop

一段时间以来,我一直在上下寻找一段易于使用的代码,让我的 C# 项目从 gmail 的电子邮件中下载文本文件附件。我确实看过 openpop.net lib,这是我看到的唯一看起来很有前途的库!谁能告诉我一些完成工作的代码?我用 openpop 查看了其他人的示例,但是他们的示例中的 api 有所不同,也许是旧版本?预先感谢您的帮助!

最佳答案

以下是使用我的 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 ("joey@gmail.com", "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 支持 MailKit 可以利用的 PIPELINING 扩展。

您可以使用 GetMessages() 批量请求一系列消息,而不是一次下载一条消息,这将利用 PIPELINING 扩展,大大减少延迟,从而大大减少下载时间。

关于c# - 尝试下载附件的 pop3 问题-C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25350347/

相关文章:

c# - Switch case 中额外大括号的用途是什么?

linux - 为什么我所有基于 Linux 的电子邮件客户端都无法使用 imap gmail 进行身份验证?

php - Google 邮件在 html 电子邮件中的图像的 src 路径中插入加号

javamail AuthenticationFailedException : EOF on socket

.net - 以编程方式使用 Gmail 接收电子邮件?

c# - 是否有用于 VMware VIX API 的 C# 包装器?

c# - 后台 worker 类取消,设置取消挂起标志但不退出

web-services - 我应该使用哪些语言和库来处理 Gmail?

pop3 - 如何使用 POP3 协议(protocol)仅检索新电子邮件

c# - 有没有一种使用 ASP.NET 验证器比较复选框和文本框的优雅方法?