首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在System.Web.Mail正常工作的情况下System.Net.Mail会失败

为什么在System.Web.Mail正常工作的情况下System.Net.Mail会失败
EN

Stack Overflow用户
提问于 2008-10-05 16:16:09
回答 3查看 4.3K关注 0票数 6

我可以让System.Net.Mail和System.Web.Mail都与GMail一起工作,但我不能让它们都与smtp.att.yahoo.com一起工作。

我从我自己的Web.config密钥中获取SMTP设置。这些设置在我使用System.Web.Mail发送时有效,但在使用System.Net.Mail时失败。

代码语言:javascript
复制
    <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上失败:

代码语言:javascript
复制
        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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2008-10-06 00:43:23

我已经知道答案了。答案是:

因为System.Net.Mail不支持“隐式”SSL,所以只支持“显式”SSL。

票数 10
EN

Stack Overflow用户

发布于 2010-10-03 20:39:28

前面关于通过System.Net.Mail的隐式和显式SSL连接的答案是绝对正确的。我能够克服这个障碍的方法是使用CDO (协作数据对象),而不需要使用现在已经过时的System.Web.Mail。

如果好奇的话,我详细介绍了另一个堆栈溢出post (GMail SMTP via C# .Net errors on all ports),并给出了一个示例。否则,您可以直接转到http://support.microsoft.com/kb/310212上的知识库文章。

希望这能有所帮助!

票数 2
EN

Stack Overflow用户

发布于 2010-03-10 15:03:54

吉梅尔的答案是从后到前。他说使用新的SSL库,但问题是System.Net.Mail不能像System.Web.Mail那样在端口465上工作!

我整天都在为相同的设置而绞尽脑汁,System.Web.Mail不能工作(至少对于我一直在测试的SMTP服务器是这样的),在这里我想我应该总是升级到微软的最新产品,以获得最好的生活。:-(

到M$博客的链接似乎说明了一切;"System.Net.Mail只支持“显式SSL”。“我假设我一直在测试的SMTP服务器需要隐式SSL。(这是Yahoo服务器btw)。

由于“升级”到新的API无疑会破坏需要隐式SSL的服务器的用户的功能,因此在这种情况下“升级”似乎是一种倒退。如果您仍然只能使用警告进行编译,那么只需禁用这些警告(如果我记得的话是0618),然后继续trucking。哦,你可以考虑通过配置文件的方式确保你的应用程序总是在你构建和测试的.NET框架版本上运行,就像将来如果M$撕毁了你的应用程序是安全的旧应用程序接口一样。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/172203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档