Send and receive email (SMTP, POP3, IMAP)
Library info: MailKit, FAQ. NuGet: MailKit.
This recipe shows how to connect to Gmail and send/receive. See also Gmail setup in recipe send email.
/*/ nuget -\MailKit; /*/
using MailKit.Net.Smtp;
using MailKit.Security;
using MimeKit;
using MailKit;
using MailKit.Net.Imap;
Send message.
var message = new MimeMessage();
message.From.Add(new MailboxAddress("Cat", "[email protected]"));
message.To.Add(new MailboxAddress("Mouse", "[email protected]"));
message.Subject = "MailKit";
message.Body = new TextPart("plain") { Text = @"message text" };
using (var client = new SmtpClient()) {
client.CheckCertificateRevocation = false;
client.Connect("smtp.gmail.com", 587, SecureSocketOptions.StartTls);
client.Authenticate("username", "password");
client.Send(message);
client.Disconnect(true);
}
Receive messages.
using (var client = new ImapClient()) {
client.CheckCertificateRevocation = false;
client.Connect("imap.googlemail.com", 993, true);
client.Authenticate("username", "password");
var inbox = client.Inbox;
inbox.Open(FolderAccess.ReadOnly);
//inbox.Open(FolderAccess.ReadWrite);
print.it($"Count {inbox.Count}");
foreach (var m in inbox.Fetch(0, -1, MessageSummaryItems.Envelope | MessageSummaryItems.Flags | MessageSummaryItems.UniqueId | MessageSummaryItems.PreviewText)) {
//if(m.Flags.Value.Has(MessageFlags.Seen)) continue;
print.it($"<><lc #C0C0ff>{m.Index}. {m.Envelope.Subject} {m.Envelope.From}<>");
print.it(m.PreviewText);
//if (!m.Flags.Value.Has(MessageFlags.Seen)) {
// var M = inbox.GetMessage(m.UniqueId);
// print.it(M.TextBody);
// //switch (m.Envelope.Subject) {
// //case "Spam845209394645200026":
// // print.it("spam");
// // inbox.MoveTo(m.UniqueId, client.GetFolder(SpecialFolder.Junk));
// // continue;
// //}
//}
}
client.Disconnect(true);
}