2017-05-29 41 views
-1

.Net Core(截至目前)缺少System.Net.Mail名稱空間,並且此名稱空間的預覽版本可通過塊金缺少SmtpClient,這是它的最重要類型。但是,如果出於某些原因不喜歡使用類庫(比如成爲一個獨立的英雄),是否有任何方式使用.Net核心(HttpWebRequest,HttpClient,套接字等)中的可用工具發送電子郵件。 ?如果是這樣怎麼做(例子,而不是理論)。在不使用類庫的情況下在.Net Core中發送電子郵件

+1

不是沒有編寫自己的庫 - 如果你更關心的是自己編寫代碼而不是自己編寫代碼,爲什麼沒有通讀MailKit代碼(https:// github。 com/jstedfast/MailKit),然後決定是否要解決這個野獸。祝你好運:) – Steveland83

+1

@Arrrr你的選擇是使用TCP庫來編寫自己的smtp類。除了其他圖書館的例子,我們可以提供幫助。電子郵件不HTTP,所以使用Http庫甚至沒有在正確的ballpark –

+0

@JoePhillips:它可以簡單地使用套接字編程完成。檢查我的答案。 – Transcendent

回答

0

你完全可以編寫自己的圖書館來發送電子郵件。問題是「你應該嗎?」除非您完全打算讓圖書館可供廣大讀者使用,否則所需時間將不是一項有價值的工作。

原來的SMTP Specification (RFC 821)https://tools.ietf.org/html/rfc821)約爲68頁。實施這個規範是「可行的」,但需要付出巨大的努力。較新的SMTP Specification (RFC2821)https://tools.ietf.org/html/rfc2821)爲79頁。

除了實現RFC 2821中規定的功能之外,還需要熟悉其他許多RFC和文檔。 (一簡要介紹,通過從頁68至70所列的參考資料一定會給你一點停頓。)

任何人發送郵件與.NET Core將是要麼使用一個服務,如SendGrid(http://sendgrid.com/),最好的選擇還是像MailKit這樣的免費和開放源代碼庫(https://github.com/jstedfast/MailKit)。我相信大多數.NET Core已部署的站點正在使用這兩種方法之一發送電子郵件。

Steve Gordon在ASP.NET Core上使用MailKit庫做了一篇非常好的博文(https://www.stevejgordon.co.uk/how-to-send-emails-in-asp-net-core-1-0)。

即使你想建立自己的SMTP librar Y(而我絕對不主張),最好的辦法可能是通過GitHub叉像MailKithttps://github.com/jstedfast/MailKit),然後修改它。這至少可以讓你玩和反覆修改一個工作實現。

您的大部分工作將使用System.Net.Sockets名稱空間中的組件完成。這裏是.NET Framework 4.7版本(https://docs.microsoft.com/en-us/dotnet/api/system.net.sockets?view=netframework-4.7)的參考。它應該與.NET Core的實現非常相似,儘管我沒有對它進行測試。

有時最好的建議是「只因爲你可以不意味着你應該。」請不要成爲「獨立英雄」。去用什麼工作。

相關問題