Skip to content

Instantly share code, notes, and snippets.

@lakario
Last active August 29, 2015 14:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lakario/23eb26f3fe82f2dfcacc to your computer and use it in GitHub Desktop.
Save lakario/23eb26f3fe82f2dfcacc to your computer and use it in GitHub Desktop.
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