1. 제품
  2.   이메일
  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을 통해 Mailkit 설치

Install-Package MailKit  

GitHub를 통해 Mailkit 설치 

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

.NET을 통해 새 메시지 만들기

오픈 소스 API MailKit 라이브러리를 사용하면 소프트웨어 개발자가 몇 가지 간단한 명령으로 MIME 메시지를 작성할 수 있습니다. TextPart는 텍스트 미디어 유형이 있는 리프 노드 MIME 부분입니다. TextPart 생성자의 첫 번째 인수는 미디어 하위 유형(이 경우 일반)을 지정합니다. 여러분이 잘 알고 있는 또 다른 미디어 하위 유형은 HTML 하위 유형입니다. MIME 부분의 문자열 내용을 모두 가져오고 설정하는 가장 쉬운 방법은 Text 속성입니다.

오픈 소스 API MailKit 라이브러리를 사용하면 소프트웨어 개발자가 몇 가지 간단한 명령으로 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를 만든 다음 이를 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;
  }
}
 한국인