ספריית קוד פתוח .NET עבור IMAP, POP3 ו-SMTP

ספריית C# .NET בחינם ליצירת הודעות עם קבצים מצורפים, הצפנה/פענוח הודעות עם PGP/MIME. 

MailKit היא ספריית קוד פתוח .NET עבור IMAP, POP3 ו-SMTP. זוהי ספריית לקוח דואר חוצת פלטפורמות הבנויה על גבי MimeKit. מטרת הפרויקט היא לספק יישומי לקוח SMTP, POP3 ו-IMAP חזק, בעל תכונות מלאות ותואם RFC.

ה-API תומך במספר תכונות חשובות הקשורות לאימות SASL, תמיכת פרוקסי, לקוח SMTP, לקוח POP3, לקוח IMAP4, מיון בצד הלקוח והשרשור של הודעות.

Previous Next

תחילת העבודה עם MailKit

הדרך הקלה ביותר להתקין את MailKit היא באמצעות NuGet. כדי להשתמש בו ממסוף מנהל החבילות של Visual Studio, אנא הזן את הפקודה הבאה.

התקן את Mailkit דרך NuGet

Install-Package MailKit  

התקן את Mailkit דרך GitHub 

git clone --recursive https://github.com/jstedfast/MailKit.git 

צור הודעות חדשות באמצעות NET

ספריית ה-API של קוד פתוח MailKit מאפשרת למפתחי תוכנה ליצור הודעות MIME עם כמה פקודות פשוטות. TextPart הוא חלק MIME-Node עלים עם סוג מדיה טקסט. הארגומנט הראשון לבנאי TextPart מציין את תת-סוג המדיה, במקרה זה, רגיל. תת-סוג נוסף של מדיה שאתם בוודאי מכירים הוא תת-הסוג HTML. הדרך הקלה ביותר להשיג ולהגדיר את שני תוכן המחרוזת של החלק MIME היא המאפיין Text.

ספריית ה-API של קוד פתוח MailKit מאפשרת למפתחי תוכנה ליצור הודעות MIME עם מעט פקודות פשוטות. TextPart הוא חלק MIME-עלים-node עם סוג מדיה של טקסט. הארגומנט הראשון לבנאי TextPart מציין את תת-סוג המדיה, במקרה זה, רגיל. תת-סוג נוסף של מדיה שאתם בוודאי מכירים הוא תת-הסוג HTML. הדרך הקלה ביותר לקבל וגם להגדיר את תוכן המחרוזת של החלק MIME היא המאפיין Text.

צור ושלח הודעה בחינם באמצעות C#

var message = new MimeMessage();
message.From.Add(new MailboxAddress("fred", "This email address is being protected from spam-bots. You need JavaScript enabled to view it."));
message.To.Add(new MailboxAddress("frans", "This email address is being protected from spam-bots. You need JavaScript enabled to view it."));
message.Subject = "FileFormat ";
message.Body = new TextPart("plain")
{
  Text = "File Format Developer Guide"
};
using (var client = new SmtpClient())
{
  // For demo-purposes,
  client.ServerCertificateValidationCallback = (s, c, h, e) => true;
  client.Connect("smtp.test.com", 587, false);
  // Note: only needed if the SMTP server requires authentication
  client.Authenticate("frans", "password");
  client.Send(message);
  client.Disconnect(true);
}                  

צור הודעה עם קבצים מצורפים באמצעות .NET API

MailKit API מספק תכונות ליצירת הודעה עם קבצים מצורפים בתוך יישומי NET. קבצים מצורפים הם בדיוק כמו כל MimePart אחר; ההבדל העיקרי הוא שהם מכילים ערך של כותרת Content-Disposition שמחזיקה בקובץ המצורף במקום מוטבע או ללא כותרת Content-Disposition בכלל. כדי לשלוח גם טקסט/HTML וגם טקסט/גרסת רגילה של ההודעה, עליך ליצור TextPart עבור כל חלק ולאחר מכן להוסיף אותם לריבוי חלקים/אלטרנטיבה.

צור הודעה עם קבצים מצורפים באמצעות C#


var message = new MimeMessage ();
message.From.Add (new MailboxAddress ("Joey", "joey@friends.com"));
message.To.Add (new MailboxAddress ("Alice", "alice@wonderland.com"));
message.Subject = "How you doin?";
// create our message text, just like before (except don't set it as the message.Body)
var body = new TextPart ("plain") {
  Text = @"Hey Alice,
What are you up to this weekend? Monica is throwing one of her parties on
Saturday and I was hoping you could make it.
Will you be my +1?
-- Joey
"
};
// create an image attachment for the file located at path
var attachment = new MimePart ("image", "gif") {
  Content = new MimeContent (File.OpenRead (path), ContentEncoding.Default),
  ContentDisposition = new ContentDisposition (ContentDisposition.Attachment),
  ContentTransferEncoding = ContentEncoding.Base64,
  FileName = Path.GetFileName (path)
};
// now create the multipart/mixed container to hold the message text and the
// image attachment
var multipart = new Multipart ("mixed");
multipart.Add (body);
multipart.Add (attachment);
// now set the multipart/mixed as the message body
message.Body = multipart;
 

הצפנת/פענוח הודעות עם PGP/MIME

ספריית MailKit מספקת תכונות להצפנת הודעות דואר אלקטרוני עם PGP/MIME בתוך יישומי NET. ה-PGP/MIME משתמש בחלק MIME עם סוג mime מרובה חלקים/מוצפן כדי להקיף נתונים מוצפנים. אם אתה רוצה להצפין הודעה, זו תמיד גישה טובה יותר להשתמש ב-SecureMailboxAddress במקום ב-MailboxAddress עבור כל נמען, מה שיאפשר למשתמשים לציין את טביעת האצבע הייחודית של מפתח ה-PGP של כל נמען.

הצפנת הודעות עם PGP/MIME באמצעות C#


public void Encrypt (MimeMessage message)
{
  // encrypt our message body using our custom GnuPG cryptography context
  using (var ctx = new MyGnuPGContext ()) {
    // Note: this assumes that each of the recipients has a PGP key associated
    // with their email address in the user's public keyring.
    // 
    // If this is not the case, you can use SecureMailboxAddresses instead of
    // normal MailboxAddresses which would allow you to specify the fingerprint
    // of their PGP keys. You could also choose to use one of the Encrypt()
    // overloads that take a list of PgpPublicKeys.
    message.Body = MultipartEncrypted.Encrypt (ctx, message.To.Mailboxes, message.Body);
  }
}

פענוח הודעות PGP/MIME


public MimeEntity Decrypt (MimeMessage message)
{
  if (message.Body is MultipartEncrypted) {
    // the top-level MIME part of the message is encrypted using PGP/MIME
    var encrypted = (MultipartEncrypted) entity;
    return encrypted.Decrypt ();
  } else {
    // the top-level MIME part is not encrypted
    return message.Body;
  }
}
 עִברִית