我正在构建一个应用程序,需要动态/编程地知道并在发送电子邮件时使用不同的SMTP设置.
我习惯使用system.net/mailSettings方法,但据我所知,它只允许一次一个SMTP连接定义,由SmtpClient()使用.
但是,我需要更多类似connectionStrings的方法,我可以根据键/名称提取一组设置.
有什么建议?我愿意跳过传统的SmtpClient/mailSettings方法,我认为必须......
目前我有:
<system.net>
<mailSettings>
<smtp from="me@mydomain.com">
<network
host="localhost"
port="25"
/>
</smtp>
</mailSettings>
</system.net>
Run Code Online (Sandbox Code Playgroud)
如何更改它以便电子邮件只发送一个名称而不是电子邮件地址?
我将我的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);
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
System.Net.Mail.SmtpException
超出存储分配.服务器响应是:请使用smtp身份验证.请参见 http://www.myISP.com/support/smtp-authentication.aspx
"超出存储分配"困扰了我们很长一段时间,我们现在忽略它.这是"使用smtp身份验证"似乎很重要.
我已将邮件设置放在app.config中,并可以成功将它们拉入mailSettingsSectionGroup对象.但是,我不确定如何使用这些设置发送消息.
这是我到目前为止:
System.Configuration.Configuration config =
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
MailSettingsSectionGroup mailSettings =
config.GetSectionGroup("system.net/mailSettings") as
System.Net.Configuration.MailSettingsSectionGroup;
Run Code Online (Sandbox Code Playgroud)
接下来使用mailSettings对象需要做什么?
为什么<system.net> <mailSettings>中的<smtp>元素的"from"属性?我怎么用呢?据我所知,无论如何我必须为MailMessage类构造函数指定From参数.我可以用任何自然的方式使用<smtp>元素的"from"属性吗?
您好,我们有一个业务逻辑层,它有一个电子邮件服务类.在这个类中,我们有一个方法可以创建一个电子邮件(这部分工作和编译很好).但是,当我们尝试访问应用程序配置文件以便测试该方法时,我们会收到错误消息 - 无法检索应用程序配置邮件设置,并且如果不是,则表示所有值都为空.以下是我们代码的应用配置部分:
<mailSettings>
<smtp deliveryMethod="Network" from="info@example.com">
<network host="localhost" port="25" defaultCredentials="true"/>
</smtp>
</mailSettings>
Run Code Online (Sandbox Code Playgroud)
这里有我们用来连接app.config的代码:
private System.Net.Configuration.MailSettingsSectionGroup mailSettings;
SmtpClient client = new SmtpClient(mailSettings.Smtp.Network.Host, mailSettings.Smtp.Network.Port);
Run Code Online (Sandbox Code Playgroud)
我们在这做错了什么?
mailsettings ×6
smtp ×4
.net ×2
app-config ×2
asp.net ×2
c# ×2
web-config ×2
console ×1
smtp-auth ×1