一段时间以来,我一直在寻找一个易于使用的代码,让我的 C# 项目从 gmail 的电子邮件中下载文本文件附件。我确实看过 openpop.net lib,这是我看到的唯一一个看起来很有希望的库!谁能给我看一些可以完成工作的代码?我用openpop查看了其他人的示例,但是他们的示例中的api有所不同,也许是旧版本?提前感谢您的帮助!
问问题
1007 次
1 回答
4
下面是使用比 OpenPOP.NET 高效得多的 MailKit 库的方法:
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 扩展,大大减少延迟,从而大大减少下载时间。
于 2014-08-18T11:14:07.000 回答