[研究]MailKit, MimeKit, MailKitLite, MimeKitLite 差異比較
2023-01-18
MailKit 和 MimeKit 是兩個.NET平台上用於處理電子郵件的開源庫。
MailKit是一個功能強大的郵件客戶端庫,它提供了一個高級API,可以方便地與各種電子郵件協議(如SMTP、POP3、IMAP)進行交互。 MailKit還提供了對S/MIME和PGP加密的支持,可以用於對電子郵件進行加密和解密。
MimeKit則是一個專注於郵件消息解析和生成的庫,它可以方便地解析和生成各種郵件消息格式,如MIME和S/MIME消息。 MimeKit也支持對PGP加密的解析和生成。
MailKitLite和MimeKitLite是MailKit和MimeKit的輕量級版本,它們針對某些特定場景進行了優化和簡化,以減少庫的大小和複雜度。
總體而言,MailKit和MimeKit提供了一個完整而強大的郵件處理解決方案,可以滿足各種不同的需求,包括處理電子郵件協議、加密和解密電子郵件、解析和生成郵件消息等等。而MailKitLite和MimeKitLite則提供了一個較為輕量級的解決方案,適用於那些對庫的大小和複雜度有限制的場景。
4者官方網站都是
http://www.mimekit.net/
MailKit 3.4.3 和 MailKitLite 3.4.3
支援.NET 6.0 .NET Standard 2.0 .NET Framework 4.6.2
MailKit is an Open Source cross-platform .NET mail-client library that is based on MimeKit and optimized for mobile devices.
https://www.nuget.org/packages/MailKit
https://www.nuget.org/packages/MailKitLite/
MimeKit 3.4.3 和 MimeKitLite 3.4.3
支援.NET 6.0 .NET Standard 2.0 .NET Framework 4.6.2
MimeKit is an Open Source library for creating and parsing MIME, S/MIME and PGP messages on desktop and mobile platforms.
https://www.nuget.org/packages/MimeKit
https://www.nuget.org/packages/MimeKitLite
差異
https://github.com/jstedfast/MimeKit
MimeKit.sln Removed Mono.Data.Sqlite
MimeKitLite.sln Dropped the Net45-specific projects/solutions
https://github.com/jstedfast/MimeKit/blob/master/README.md
MimeKit.sln - includes projects for .NET 4.5/4.6/4.7/4.8, .NETStandard 1.3/1.6/2.0 as well as the unit tests.
MimeKitLite.sln - includes projects for the stripped-down versions of MimeKit that drop support for crypto.
MimeKit.sln - 包括 .NET 4.5/4.6/4.7/4.8、.NETStandard 1.3/1.6/2.0 的項目以及單元測試。
MimeKitLite.sln - 包括 MimeKit 的精簡版本的項目,它放棄了對加密的支持。
********************************************************************************
Visual Studio 2022 NuGet 安裝 MailKit 3.4.3 要求
Portable.BouncyCastle.1.9.0
System.Buffers.4.5.1
System.Numerics.Vectors.4.5.0
System.Runtime.CompilerServices.Unsafe.6.0.0
System.Memory.4.5.5
MimeKit.3.4.3
********************************************************************************
Visual Studio 2022 NuGet 安裝 MailKitLite 3.4.3 要求
System.Buffers.4.5.1
System.Numerics.Vectors.4.5.0
System.Runtime.CompilerServices.Unsafe.6.0.0
System.Memory.4.5.5
MimeKitLite.3.4.3
********************************************************************************
使用 MailKitLite 3.43 和 MimeKitLite 3.43 情況
using MailKit.Net.Smtp; // 錯誤:找不到類型或命名空間名稱 'MailKit' using MailKit.Scurity; // 錯誤:找不到類型或命名空間名稱 'MailKit' using MailKitLite.Net.Smtp; // 錯誤:找不到類型或命名空間名稱 'MailKitLite' using MailKit.Security; // 錯誤:找不到類型或命名空間名稱 'MailKitLite' using MimeKit; using MimeKit.Cryptography; using MimeKit.Utils; using MimeKitLite; // 錯誤:找不到類型或命名空間名稱 'MimeKitLite' using MimeKitLite.Cryptography; // 錯誤:找不到類型或命名空間名稱 'MimeKitLite' using MimeKitLite.Utils; // 錯誤:找不到類型或命名空間名稱 'MimeKitLite' |
編譯會出錯
CS0234 命名空間 'MimeKit.Cryptography' 中沒有類型或命名空間名稱 'TemporarySecureMimeContext'
CS0103 名稱 'MultipartSigned' 不存在於目前的內容
using (var ctx = new MimeKit.Cryptography.TemporarySecureMimeContext()) { // Note: this assumes that the Sender address has an S/MIME signing certificate // and private key with an X.509 Subject Email identifier that matches the // sender's email address. var ctxsender = message.From.Mailboxes.FirstOrDefault(); CmsSigner signer = new CmsSigner(signCert); message.Body = MultipartSigned.Create(ctx, signer, message.Body); // MimeKit.Cryptography.CertificateNotFoundException // A valid signing certificate could not be found. //message.Body = MultipartSigned.Create(ctx, ctxsender, DigestAlgorithm.Sha1, message.Body); } |
下面會出現錯誤
命名空間 'MimeKit.Cryptography' 中沒有類型或命名空間名稱 'SecureMailboxAddress'
MimeKit.Cryptography.SecureMailboxAddress mailbox = new MimeKit.Cryptography.SecureMailboxAddress( System.Text.Encoding.GetEncoding("UTF-8"), "信箱", new List<string>(), "帳號@abcdef.com.tw", "" ); |
下面會出現錯誤
using (var client = new MailKitLite.Net.Smtp.SmtpClient
{
ServerCertificateValidationCallback = (s, c, h, ee) => true
})
|
下面會出現錯誤
using (var client = new MailKit.Net.Smtp.SmtpClient
{
ServerCertificateValidationCallback = (s, c, h, ee) => true
})
|
下面會出現錯誤
using (var client = new SmtpClient
{
ServerCertificateValidationCallback = (s, c, h, ee) => true
})
|
(完)
相關
[研究][C#][ASP.NET] 自動加簽或不加簽寄信(使用 MailKit 和 MimeKit)(六)附件改良https://shaurong.blogspot.com/2023/01/caspnet-mailkit-mimekit.html
https://shaurong.blogspot.com/2022/06/caspnet-mailkit-mimekit_12.html
https://shaurong.blogspot.com/2022/06/caspnet-mailkit-mimekit.html
[研究][C#][ASP.NET] 加簽寄信 (使用 MailKit 和 MimeKit)
https://shaurong.blogspot.com/2019/10/caspnet-mailkit-mimekit_13.html
[研究][C#][ASP.NET] 寄信 (使用 MailKit 和 MimeKit)
https://shaurong.blogspot.com/2019/10/caspnet-mailkit-mimekit_11.html
[研究][C#][ASP.NET] 加簽寄信 (使用 System.Net.Mail.MailMessage)
https://shaurong.blogspot.com/2019/10/caspnet-systemnetmailmailmessage.html
mimekit - 在MimeKit上,簽名和加密
http://hant.ask.helplib.com/mimekit/post_4274560
MailKit Documentation - Creating messages
http://www.mimekit.net/docs/html/Creating-Messages.htm
有簡單寄信範例 (但沒有加簽)
MailKit Documentation - Digitally Signing Messages using S/MIME
http://www.mimekit.net/docs/html/Working-With-SMime.htm#Sign
.NET Framework 中過時的類型
https://docs.microsoft.com/zh-tw/dotnet/framework/whats-new/obsolete-types
System.Web.Mail.SmtpMail 過時,建議的替代做法是 System.Net.Mail.SmtpClient。
System.Net.Mail.SmtpClient
https://docs.microsoft.com/zh-tw/dotnet/api/system.net.mail.smtpclient?view=netframework-4.8
System.Net.Mail.SmtpClient 淘汰,建議改用 https://github.com/jstedfast/MailKit 和 https://github.com/jstedfast/MimeKit
GitHub - jstedfast/MailKit: A cross-platform .NET library for IMAP, POP3, and SMTP.
https://github.com/jstedfast/MailKit
GitHub - jstedfast/MimeKit: A .NET MIME creation and parser library with support for S/MIME, PGP, DKIM, TNEF and Unix mbox spools.
https://github.com/jstedfast/MimeKit
[研究][C#][ASP.NET] 加簽寄信 (使用 System.Net.Mail.MailMessage)
https://shaurong.blogspot.com/2019/10/caspnet-systemnetmailmailmessage.html
[研究][C#]加密加簽寄信(使用Cpi.Net.SecureMail)(一)
http://shaurong.blogspot.com/2017/02/ccpinetsecuremail.html
[研究][C#]加密加簽寄信(使用Cpi.Net.SecureMail)(二)
http://shaurong.blogspot.com/2017/02/ccpinetsecuremail_13.html
[研究][C#][ASP.NET] IIS SMTP 寄信失敗,拒絕存取路徑
https://shaurong.blogspot.com/2019/10/caspnet-iis-smtp.html
[研究] [ASP.NET] [C#] [WebForm] 寄信問題
http://shaurong.blogspot.com/2017/06/aspnet-c-webform.html
An S/MIME Library for Sending Signed and Encrypted E-mail
Pete Everett, 15 Jul 2010
https://www.codeproject.com/Articles/41727/An-S-MIME-Library-for-Sending-Signed-and-Encrypted
ASP.NET寄發加密加簽信件
https://www.nccst.nat.gov.tw/ArticlesDetail?lang=zh&seq=1160
Cpi.Net.SecureMail
https://www.codeproject.com/script/Content/ViewAssociatedFile.aspx?rzp=%2FKB%2Fsecurity%2FCPI_NET_SecureMail%2F%2FCpi.Net.SecureMail_src.zip&zep=Cpi.Net.SecureMail_src%2FCpi.Net.SecureMail%2FSecureMailMessage.cs&obid=41727&obtid=2&ovid=5
如何透過 .NET 送出一個包含 S/MIME 簽章的郵件
2009/06/06 21:20
https://blog.miniasp.com/post/2009/06/06/How-to-send-s-mime-email-using-net
網誌管理員已經移除這則留言。
回覆刪除