3
我搜索了很多如何從Gmail讀取電子郵件,然後將其標記爲未讀(不可見),現在我發現我想與所有人分享。如何將Gmail郵件標記爲未讀(不可見)MailSystem.NET
我搜索了很多如何從Gmail讀取電子郵件,然後將其標記爲未讀(不可見),現在我發現我想與所有人分享。如何將Gmail郵件標記爲未讀(不可見)MailSystem.NET
利用圖書館http://mailsystem.codeplex.com/
來源:http://mailsystem.codeplex.com/discussions/269058
添加參考:activeup.net.common,activeup.net.imap4,activeup.net.mail
代碼:
Imap4Client imap = new Imap4Client();
imap.ConnectSsl("imap.gmail.com", 993);
imap.Login("[email protected]", "xxxxxxx");
imap.Command("capability");
Mailbox inbox = imap.SelectMailbox("inbox");
int[] ids = inbox.Search("UNSEEN");
if (ids.Length > 0)
{
ActiveUp.Net.Mail.Message msg_first = inbox.Fetch.MessageObject(ids[0]);
//ignore this gmail_data stuff // undefined in this scope // checking to make sure it's a "new" unread msg
//if (gmail_data != msg_first.Date.ToString())
//{
// gmail_data = msg_first.Date.ToString();
XElement xmail = new XElement("gmail",
new XAttribute("count", ids.Length.ToString()),
new XAttribute("modified", msg_first.Date.ToString())
);
string name = "", address = "", from = "";
Regex reg_name = new Regex("\"[^\"]+");
Regex reg_address = new Regex("<[^>]+");
ActiveUp.Net.Mail.Message msg = null;
for (var i = 0; i < ids.Length; i++)
{
msg = inbox.Fetch.MessageObject(ids[i]);
from = msg.HeaderFields["from"];
name = reg_name.Match(from).Value.Replace("\"", "");
address = reg_address.Match(from).Value.Replace("<", "");
xmail.Add(new XElement("entry",
new XAttribute("id", msg.MessageId),
new XAttribute("modified", msg.Date.ToString()),
new XAttribute("name", name),
new XAttribute("address", address),
new XElement("subject", msg.Subject),
new XElement("body-text", msg.BodyText.TextStripped),
new XElement("body-html", msg.BodyHtml.Text)
));
//mark as unread
var flags = new FlagCollection();
flags.Add("Seen");
inbox.RemoveFlags(ids[i], flags);
}
File.WriteAllText("gmail.xml", xmail.ToString());
}
}
您可能想要將示例代碼剝離到真正相關的部分。 RemoveFlags()是訣竅的方法。其餘的令人眼花繚亂。 – Lars