C # отправлять электронную почту, используя неявный ssl - PullRequest
4 голосов
/ 16 января 2012

Существует ли какая-либо библиотека, предпочтительная бесплатная, которую можно использовать для считывания электронной почты с использованием неявного протокола ssl. Мой хостинг-провайдер поддерживает электронную почту ssl ... но стандартный почтовый клиент .net не может справиться с этим.

Ответы [ 7 ]

3 голосов
/ 11 июля 2012

System.Net.Mail поддерживает «явный SSL» (также известный как «StartTLS» - обычно на порту 25 или 587), но не «неявный SSL» (он же «SMTPS» - обычно на порту 465).

Насколько я знаю, явный SSL начинается с незащищенного соединения, затем дается команда STARTTLS и, наконец, устанавливается защищенное соединение SSL.Неявный SSL, с другой стороны, требует, чтобы SSL-соединение было установлено до , когда обе стороны начинают говорить.

Некоторые серверы (например, gmail) принимают оба, поэтому вам просто нужно установитьEnableSsl в true и отправить на правильный порт.Если ваш сервер не поддерживает явный SSL, однако, этот «простой способ» не подходит.

Я также все еще ищу общее решение для использования System.Net.Mail с неявным SSL, спока не повезло.

В любом случае взгляните на эту статью , она может дать вам некоторое представление.

[править: @ Никита прав, исправленономера портов, чтобы избежать путаницы]

1 голос
/ 18 июля 2015

Попробуйте проверить AIM (Aegis Implicit Mail) на https://sourceforge.net/p/netimplicitssl/wiki/Home/

1 голос
/ 11 апреля 2015

Используйте порт TLS (т.е. 587), а не порт SSL.У меня была такая же проблема в течение нескольких месяцев, пока я не нашел это решение.

Отправка электронной почты в .NET через Gmail

0 голосов
/ 28 февраля 2017

Вы можете использовать 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);
        }
    }
    
0 голосов
/ 16 ноября 2012

AspNetEmail поддерживает явный SSL и неявный ssl

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

0 голосов
/ 16 января 2012

В качестве одного из вариантов наш SecureBlackbox включает в себя SMTP компонент, который работает как через явный, так и неявный SSL и поддерживает различные механизмы аутентификации (включая SASL, NTLM и т. Д.).

0 голосов
/ 16 января 2012

Вы все еще можете использовать устаревший API System.Web.Mail.MailMessage (и установить его опцию "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 локально, чтобы установить туннель SSL / TLS от вашего localhost до вашего SMTP-сервера. Затем вам нужно будет нормально подключиться (без SSL / TLS) к концу localhost туннеля в качестве SMTP-сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...