首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用配置文件的MailSettings进行SMTP身份验证

使用配置文件的MailSettings进行SMTP身份验证
EN

Stack Overflow用户
提问于 2010-09-01 18:47:49
回答 2查看 39.8K关注 0票数 18

我将MailSettings存储在web.config中,但是当我发送消息时,SMTP服务器报告说我需要使用身份验证。配置文件中有我的用户名/密码,但仍然失败。

如果我做下面的工作,它是有效的,但这似乎是一个额外的步骤。它不是应该从配置文件中获取它并自动使用身份验证吗?

代码语言:javascript
复制
System.Configuration.Configuration config = WebConfigurationManager.OpenWebConfiguration(
    HttpContext.Current.Request.ApplicationPath);
MailSettingsSectionGroup settings =
    (MailSettingsSectionGroup) config.GetSectionGroup("system.net/mailSettings");

SmtpClient client = new SmtpClient();
client.Credentials = new NetworkCredential(
   settings.Smtp.Network.UserName, settings.Smtp.Network.Password);

Web.config

代码语言:javascript
复制
<system.net>
    <mailSettings>
        <smtp from="me@xyz.com" deliveryMethod="Network">
            <network host="mail.xyz.com" defaultCredentials="true"
                userName="me@xyzcom" password="abc123" />
        </smtp>
    </mailSettings>
 </system.net>

System.Net.Mail.SmtpException

超过了存储分配。服务器响应是:请使用smtp身份验证。请参阅http://www.myISP.com/support/smtp-authentication.aspx

“超出存储分配”使我们困惑了很长一段时间,我们现在忽略它。“使用smtp身份验证”似乎很重要。

EN

回答 2

Stack Overflow用户

发布于 2010-10-22 04:10:42

编码方法与web.config唯一方法的区别在于后者具有defaultCredentials="true"集。这是防止用户名和密码被用于身份验证,使用这种方法。我认为通过将其设置为“false”(或者完全删除它,因为“false”是默认的)就可以解决这个问题。

票数 30
EN

Stack Overflow用户

发布于 2010-09-01 19:05:48

SmtpClient类应该使用auth参数,而不需要显式地从配置中读取用户名或密码。请参阅http://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.aspx

您能从您的配置中发布System.Net段吗?另外,您是否可以发布从SMTP服务器接收到的确切错误?

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

https://stackoverflow.com/questions/3621169

复制
相关文章

相似问题

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