1. 製品
  2.   Eメール
  3.   .NET
  4.   MailKit
 
  

IMAP、POP3、SMTP 用のオープンソース .NET ライブラリ

添付ファイル付きのメッセージを生成し、PGP/MIME でメッセージを暗号化/復号化するための無料の C# .NET ライブラリ。 

MailKit は、IMAP、POP3、および SMTP 用のオープン ソース .NET ライブラリです。これは、MimeKit の上に構築されたクロスプラットフォームのメール クライアント ライブラリです。このプロジェクトは、堅牢で完全な機能を備えた、RFC 準拠の SMTP、POP3、および IMAP クライアントの実装を提供することを目的としています。

API は、SASL 認証、プロキシ サポート、SMTP クライアント、POP3 クライアント、IMAP4 クライアント、クライアント側の並べ替え、およびメッセージのスレッド化に関連するいくつかの重要な機能をサポートしています。

Previous Next

MailKit を使い始める

MailKit をインストールする最も簡単な方法は、NuGet を使用することです。 Visual Studio のパッケージ マネージャー コンソールから使用するには、次のコマンドを入力してください。

NuGet 経由でメールキットをインストールする

Install-Package MailKit  

GitHub経由でMailkitをインストール 

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

.NET 経由で新しいメッセージを作成する

オープン ソース API の MailKit ライブラリを使用すると、ソフトウェア開発者はいくつかの簡単なコマンドで MIME メッセージを作成できます。 TextPart は、テキスト メディア タイプを持つリーフ ノード MIME パーツです。 TextPart コンストラクターの最初の引数は、メディア サブタイプ (この場合はプレーン) を指定します。おそらくおなじみのもう 1 つのメディア サブタイプは、HTML サブタイプです。 MIME 部分の両方の文字列コンテンツを取得および設定する最も簡単な方法は、Text プロパティです。

オープン ソース API の MailKit ライブラリを使用すると、ソフトウェア開発者はいくつかの簡単なコマンドで MIME メッセージを作成できます。 TextPart は、テキスト メディア タイプを持つリーフ ノード MIME パーツです。 TextPart コンストラクターの最初の引数は、メディア サブタイプ (この場合はプレーン) を指定します。おそらくおなじみのもう 1 つのメディア サブタイプは、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 ヘッダーがまったく含まれていないことです。メッセージの text/HTML と text/plain バージョンの両方を送信するには、各パーツの TextPart を作成し、それらを multipart/alternative に追加する必要があります。

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 ライブラリは、.NET アプリケーション内で PGP/MIME を使用して電子メール メッセージを暗号化する機能を提供します。 PGP/MIME は、マルチパート/暗号化された MIME タイプの MIME パートを使用して、暗号化されたデータをカプセル化します。メッセージを暗号化する場合は、受信者ごとに MailboxAddress の代わりに SecureMailboxAddress を使用することをお勧めします。これにより、ユーザーは各受信者の PGP キーの一意のフィンガープリントを指定できます。

C# 経由で 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;
  }
}
 日本