Last active
August 29, 2015 14:15
-
-
Save lakario/23eb26f3fe82f2dfcacc to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
void Main() | |
{ | |
var server = "imap.gmail.com"; | |
var login = "**********"; | |
var password = "**********"; | |
var attachmentsPath = @"C:\test"; | |
var inboxFolderName = "INBOX"; | |
var processedFolderName = "PROCESSED"; | |
var processedMessages = new List<Message>(); | |
var client = new ImapClient(server, true); | |
if (!client.Connect()) { | |
return; | |
} | |
if (!client.Login(login, password)) { | |
return; | |
} | |
var inboxFolder = client.Folders.FirstOrDefault (f => f.Name == inboxFolderName); | |
if (inboxFolder == null) { | |
return; | |
} | |
inboxFolder.Messages.Download(); | |
if (inboxFolder.Messages.Any()) { | |
foreach (var message in inboxFolder.Messages) { | |
String.Format("Processing message... UID: {0}, FROM: {1}, TO: {2}, SUBJECT: {3}", | |
message.UId, message.From, String.Join(", ", message.To.Select (t => t.Address)), message.Subject).Dump(); | |
message.Seen = true; | |
if (message.Attachments != null && message.Attachments.Any()) { | |
foreach(var attachment in message.Attachments) { | |
attachment.Download(); | |
var fileName = String.Format("{0}-{2}{1}", Path.GetFileNameWithoutExtension(attachment.FileName), Path.GetExtension(attachment.FileName), Guid.NewGuid()); | |
attachment.Save(attachmentsPath, fileName); | |
String.Format("Attachment saved: {0}", fileName).Dump(); | |
} | |
} | |
else { | |
"No attachments found.".Dump(); | |
} | |
processedMessages.Add(message); | |
"".Dump(); | |
} | |
} | |
else { | |
"No unprocessed messages found.".Dump(); | |
} | |
if (processedMessages.Any()) { | |
var processedFolder = client.Folders.FirstOrDefault (f => f.Name == processedFolderName); | |
if (processedFolder == null) { | |
processedFolder = client.Folders.Add(processedFolderName); | |
} | |
foreach(var message in processedMessages) { | |
message.MoveTo(processedFolder); | |
String.Format("Message {0} moved to {1} folder.", message.UId, processedFolderName).Dump(); | |
} | |
} | |
} | |
// Define other methods and classes here |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment