کتابخانه NET منبع باز برای IMAP، POP3 و SMTP

کتابخانه C#.NET رایگان برای ایجاد پیام با پیوست‌ها، رمزگذاری/رمزگشایی پیام‌ها با PGP/MIME. 

MailKit یک کتابخانه منبع باز دات نت برای IMAP، POP3 و SMTP است. این یک کتابخانه ایمیل بین پلتفرمی است که بر روی MimeKit ساخته شده است. هدف این پروژه ارائه پیاده‌سازی‌های کلاینت SMTP، POP3 و IMAP قوی، با ویژگی‌های کامل و RFC است.

API از چندین ویژگی مهم مرتبط با احراز هویت SASL، پشتیبانی از پروکسی، کلاینت SMTP، کلاینت POP3، سرویس گیرنده IMAP4، مرتب‌سازی سمت سرویس گیرنده و رشته‌بندی پیام‌ها پشتیبانی می‌کند.

Previous Next

شروع کار با MailKit

ساده ترین راه برای نصب MailKit از طریق NuGet است. برای استفاده از آن از طریق کنسول مدیریت بسته ویژوال استودیو، لطفاً دستور زیر را وارد کنید.

Mailkit را از طریق NuGet نصب کنید

Install-Package MailKit  

Mailkit را از طریق GitHub نصب کنید 

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

ایجاد پیام های جدید از طریق دات نت

کتابخانه MailKit API منبع باز به توسعه دهندگان نرم افزار امکان می دهد پیام های MIME را با چند دستور ساده ایجاد کنند. یک TextPart یک بخش MIME با یک نوع رسانه متنی است. اولین آرگومان سازنده TextPart، زیرنوع رسانه، در این مورد، ساده را مشخص می‌کند. یکی دیگر از زیرمجموعه های رسانه ای که احتمالاً با آن آشنا هستید، زیرگروه HTML است. ساده ترین راه برای دریافت و تنظیم هر دو محتوای رشته قسمت MIME، ویژگی Text است.

کتابخانه MailKit API منبع باز به توسعه دهندگان نرم افزار امکان می دهد پیام های MIME را با چند دستور ساده ایجاد کنند. یک TextPart یک بخش MIME با گره برگ با نوع رسانه متنی است. اولین آرگومان سازنده 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 ایجاد کنید و سپس آنها را به چند قسمتی/جایگزین اضافه کنید.

ایجاد پیام با پیوست ها از طریق سی شارپ


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 از طریق سی شارپ


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;
  }
}
 فارسی