从C#读取整个GMail

时间:2011-09-13 08:14:13

标签: c# gmail email-client

我正在尝试查找一些代码,这些代码可以让我删除Gmail帐户中的每封电子邮件,但目前使用Atom阅读器的代码似乎只会读取未读邮件。

我想阅读所有内容,主题,身体和附件。

是否有可能,是否有人有一些工作代码。

戴夫

4 个答案:

答案 0 :(得分:1)

您想要做的不是一个简单的应用程序,我们可以帮助您编写邮件客户端应用程序,需要花费大量精力阅读有关POP3或IMAP邮件客户端如何工作的许多文章,您还必须了解与这些协议相关的RFC 1939RFC 1081文档。无论如何你必须使用IMAP或POP3协议来实现你的邮件客户端应用程序有很多文章可以参考它们。

SMTP and POP3 Mail Server

A POP3 Client in C# .NET

和RFC文档:

Post Office Protocol

答案 1 :(得分:0)

你可以通过例如IMAP。它应该在帐户设置中启用。

有很多关于使用/实施IMAP的C#教程,只需google for。

答案 2 :(得分:0)

正如其他人所说,你最好的选择是使用IMAP协议。但请注意,Google IMAP实施需要安全连接,因此不仅仅是实施IMAP。

有一个C#实现here,它还包含安全连接的东西,但要注意其中有很多错误,涉及头编码等问题,所以要准备修复一些如果您决定使用它,则会出现错误。

答案 3 :(得分:0)

了解如何从XML中读取信息,您可以通过此Feed https://mail.google.com/mail/feed/atom获取Gmail上的所有信息。我在下面有一个示例代码,它读取未读消息的数量并读取标题和摘要,但您可以获取其他信息,例如来自谁,附件等。不需要额外的库:)

        try
        {
            System.Net.WebClient objClient = new System.Net.WebClient();
            string response;
            string title;
            string summary;

            //Creating a new xml document
            XmlDocument doc = new XmlDocument();

            //Logging in Gmail server to get data
            objClient.Credentials = new System.Net.NetworkCredential("Email", "Password");
            //reading data and converting to string
            response = Encoding.UTF8.GetString(objClient.DownloadData(@"https://mail.google.com/mail/feed/atom"));

            response = response.Replace(@"<feed version=""0.3"" xmlns=""http://purl.org/atom/ns#"">", @"<feed>");

            //loading into an XML so we can get information easily
            doc.LoadXml(response);

            //nr of emails
            nr = doc.SelectSingleNode(@"/feed/fullcount").InnerText;

            //Reading the title and the summary for every email
            foreach (XmlNode node in doc.SelectNodes(@"/feed/entry"))
            {
                title = node.SelectSingleNode("title").InnerText;
                summary = node.SelectSingleNode("summary").InnerText;
            }

        }
    }
    catch (Exception exe)
    {
         MessageBox.Show("Check your network connection");
    }