我将MailSettings存储在web.config中,但是当我发送消息时,SMTP服务器报告说我需要使用身份验证。配置文件中有我的用户名/密码,但仍然失败。
如果我做下面的工作,它是有效的,但这似乎是一个额外的步骤。它不是应该从配置文件中获取它并自动使用身份验证吗?
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
<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身份验证”似乎很重要。
发布于 2010-10-22 04:10:42
编码方法与web.config唯一方法的区别在于后者具有defaultCredentials="true"集。这是防止用户名和密码被用于身份验证,使用这种方法。我认为通过将其设置为“false”(或者完全删除它,因为“false”是默认的)就可以解决这个问题。
发布于 2010-09-01 19:05:48
SmtpClient类应该使用auth参数,而不需要显式地从配置中读取用户名或密码。请参阅http://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.aspx
您能从您的配置中发布System.Net段吗?另外,您是否可以发布从SMTP服务器接收到的确切错误?
https://stackoverflow.com/questions/3621169
复制相似问题