簡體   English   中英

C#使用隱式ssl發送電子郵件

[英]C# send email using implicit ssl

有沒有任何庫可以免費使用,以便使用隱式ssl協議感知電子郵件。 我的托管服務提供商支持ssl電子郵件...但標准.net電子郵件客戶端無法處理。

System.Net.Mail支持“顯式SSL”(也稱為“StartTLS” - 通常在端口25或587上),但不支持“隱式SSL”(又名“SMTPS” - 通常在端口465上)。

據我所知,顯式SSL從不安全的連接開始,然后給出STARTTLS命令,最后建立SSL安全連接。 另一方面,隱式SSL要求雙方開始通話之前建立SSL連接。

某些服務器(如gmail)同時接受這兩種服務器,因此您只需將EnableSsl設置為true並發送到正確的端口即可。 但是,如果您的服務器不支持明確SSL,則這種“簡單方法”不是一種選擇。

我還在尋找使用帶有隱式SSL的System.Net.Mail的一般解決方案,到目前為止沒有運氣。

無論如何看看這篇文章 ,它可能會給你一些見解。

[編輯:@Nikita是對的,固定端口號以避免混淆]

使用TLS端口(即587)而不是SSL端口。 幾個月來我遇到了同樣的問題,直到找到這個解決方案。

通過Gmail在.NET中發送電子郵件

嘗試在https://sourceforge.net/p/netimplicitssl/wiki/Home/上查看AIM(Aegis隱式郵件)

您仍然可以使用已棄用的System.Web.Mail.MailMessage API(並設置其"http://schemas.microsoft.com/cdo/configuration/smtpusessl"選項,用於顯式SSL / TLS):

System.Web.Mail.MailMessage mailMsg = new System.Web.Mail.MailMessage();
// ...
mailMsg.Fields.Add
            ("http://schemas.microsoft.com/cdo/configuration/smtpusessl",
                 true);

或者,如果可以,您可以在本地運行類似stunnel的東西,以建立從localhost到SMTP服務器的SSL / TLS隧道。 然后,您必須正常連接(不使用SSL / TLS)作為SMTP服務器的隧道的localhost端。

AspNetEmail支持Explicit SSL和Implicit ssl

http://www.advancedintellect.com/download.aspx

您可以使用AIM(Aegis Implicit Mail)通過隱式SSL發送電子郵件:

  1. 首先安裝包:Install-Package AIM
  2. 然后使用示例代碼發送電子郵件

     class Mail { private static string mailAddress = "{you email address}"; private static string host = "{your host server}"; private static string userName = "{your user name}"; private static string password = "{your password}"; private static string userTo = "{to address}"; private static void SendEmail(string subject, string message) { //Generate Message var mailMessage = new MimeMailMessage(); mailMessage.From = new MimeMailAddress(mailAddress); mailMessage.To.Add(userTo); mailMessage.Subject = subject; mailMessage.Body = message; //Create Smtp Client var mailer = new MimeMailer(host, 465); mailer.User = userName; mailer.Password = password; mailer.SslType = SslMode.Ssl; mailer.AuthenticationMode = AuthenticationType.Base64; //Set a delegate function for call back mailer.SendCompleted += compEvent; mailer.SendMailAsync(mailMessage); } //Call back function private static void compEvent(object sender, AsyncCompletedEventArgs e) { if (e.UserState != null) Console.Out.WriteLine(e.UserState.ToString()); Console.Out.WriteLine("is it canceled? " + e.Cancelled); if (e.Error != null) Console.Out.WriteLine("Error : " + e.Error.Message); } } 

作為選項之一,我們的SecureBlackbox包括SMTP組件,該組件通過隱式和顯式SSL工作,並支持不同的身份驗證機制(包括SASL,NTLM等)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM