Почему System.Net.Mail не работает там, где работает System.Web.Mail

StackOverflow https://stackoverflow.com/questions/172203

  •  05-07-2019
  •  | 
  •  

Вопрос

Я могу заставить System.Net.Mail и System.Web.Mail работать с GMail, но я не могу заставить их обоих работать с smtp.att.yahoo.com.

Я получаю настройки SMTP из своих собственных ключей Web.config. Эти настройки работают, когда я отправляю с использованием System.Web.Mail, но не работаю с System.Net.Mail.

    <add key="SmtpServer" value="smtp.att.yahoo.com"/>
    <add key="SmtpServerAuthenticateUser" value="ctrager@sbcglobal.net"/>
    <add key="SmtpServerPort" value="465"/>
    <add key="SmtpUseSSL" value="1"/>
    <add key="SmtpServerAuthenticatePassword" value="MY PASSWORD"/>

Вот код, который захватывает мои настройки и работает с GMail, не работает с att.yahoo:

        SmtpClient smtp;

        if (!string.IsNullOrEmpty(Util.get_setting("SmtpServer", "")))
        {
           smtp = new SmtpClient(Util.get_setting("SmtpServer", ""));
        }
        else
        {
           smtp = new SmtpClient();
        }


        if (!string.IsNullOrEmpty(Util.get_setting("SmtpServerAuthenticatePassword", "")))
           smtp.Credentials = new System.Net.NetworkCredential(
               Util.get_setting("SmtpServerAuthenticateUser", ""), 
               Util.get_setting("SmtpServerAuthenticatePassword", ""));

        if (!string.IsNullOrEmpty(Util.get_setting("SmtpServerPort", "")))
           smtp.Port = int.Parse(Util.get_setting("SmtpServerPort", ""));

        if (Util.get_setting("SmtpUseSSL", "0") == "1")
           smtp.EnableSsl = true;

        smtp.Send(message);

Это моя проблема?

http://blogs.msdn.com/webdav_101/archive/2008/06/02/system-net-mail-with-ssl-to-authenticate-against-port-465.aspx

Это было полезно?

Решение

Я узнал ответ. Ответ:

Поскольку System.Net.Mail не поддерживает " неявное " SSL, только "явный" SSL.

Другие советы

Ответ Гимела задом наперед. Он говорит, что используйте новую библиотеку System. Net .Mail, но проблема в том, что System. Net .Mail не работает для SSL через порт 465, как System. Веб . Почта сделала / работает!

Я бился с этим весь день и при одинаковых настройках System. Веб .Mail WORKS и System. Net .Mail НЕ работает (по крайней мере, для SMTP-сервера, с которым я тестировал), и тут я подумал, что мне всегда следует обновиться до последнего предложения Microsoft, чтобы получить лучшее в жизни. : - (

Эта ссылка на блог M $, кажется, говорит обо всем; " System.Net.Mail поддерживает только & # 8220; Явный SSL & # 8221;. " и я предполагаю, что SMTP-сервер, с которым я тестировал, хочет неявного SSL. (Кстати, это сервер Yahoo).

После "обновления" новый API, несомненно, нарушит функциональность для пользователей, у которых есть серверы, которым требуется неявный SSL, и это похоже на шаг назад к «обновлению». в этом случае. Если вы все еще можете компилировать только с предупреждениями, просто отключите эти предупреждения (0618, если я помню) и продолжайте грузить. Да, и вы, возможно, захотите убедиться, что ваше приложение всегда работает с версией .NET Framework, которую вы создали и протестировали с помощью файла конфигурации, просто так в будущем, если M $ вырвет старый API, ваше приложение безопасно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top