net利用SMTP发邮件,配置文件(web.config)实现邮件发送的相关配置
2009-09-15 18:56
851 查看
XML/HTML代码
<system.net>
</system.net>
如下:设置stmp邮件发送的配置
XML/HTML代码
//父元素:configuration(提供所有名称空间的配置)
<system.net>
//这里还可以加入如下元素的设置
//authenticationModules:设置用来验证WEB请求的模块
//connectionManagement:设置WEB服务器最大连接数
//defaultProxy:设置http的代理服务器
//mailSettings:配置smtp
//requestCaching:控制网络请求缓存机制
//settings:为System.NET配置基本网络选项
//<webRequestModules>元素(网络设置):指定模块从WEB服务器请求信息。
<mailSettings>
//deliveryMethod设置邮件发送方式,这里是网络形式
<smtp deliveryMethod="Network" from="xxx@yyy.com" >
//host邮件发送服务器
//userName发送邮件时,用来进行身份验证的用户名
//password如下验证时的密码
<network host="smtp.yyy.com" userName="xxx@yyy.com" password="zzzzzzz" />
</smtp>
</mailSettings>
</system.net>
以编程的方式获取web.config里的smtp配置
NetSectionGroup类
命名空间
System.Net.Configuration:为应用程序提供了以编程方式访问和更新配置文件System.Net命名空间下的设置的类。
程序集
System
定义:
public sealed class NetSectionGroup : ConfigurationSectionGroup
说明:
这个类提供了以程序方式访问存储在配置文件里的信息。
这个类和网络设置文档里的system.net元素(网络设置)相对应。
这部分的为下列名称空间提供配置设置:
System.Net
System.Net.Cache
System.Net.Mail
在程序里读取configuration/system.net/mailSettings/stmp配置
C#代码
//NetSectionGroup在上面已经介绍过了
//GetSectionGroup从指定的配置文件获取system.net的配置
//WebConfigurationManager.OpenWebConfiguration
//打开应用程序根目录下的web.config生成System.Configuration.Configuration对象实例
SmtpSection cfg = NetSectionGroup.GetSectionGroup(WebConfigurationManager.OpenWebConfiguration("~/web.config")).MailSettings.Smtp;
发送电子邮件
C#代码
try{
//实例化一个邮件消息对象
MailMessage email = new MailMessage(cfg.From, mailto);
email.IsBodyHtml = true;
email.Body = "要发送的邮件内容,上面已经设置可以支持html内容,例外还可以通过指定email.BodyEncoding属性设置邮件内容的编码";
email.Subject = "邮件主题,通过指定email.SubjectEncoding属性设置邮件主题的编码";
//实例化smtp客服端对象,用来发送电子邮件
System.Net.Mail.SmtpClient stmp = new SmtpClient(cfg.Network.Host);
//设置是否需要发送是否需要身份验证,如果不需要下面的credentials是不需要的
stmp.UseDefaultCredentials = true;
stmp.Credentials = new System.Net.NetworkCredential(cfg.Network.UserName, cfg.Network.Password);
//发送邮件
stmp.Send(email);
}
catch (Exception ex)
{ // }
===================================
以往我們發信都會將 SMTP Server 的 IP 位址設定在 web.config 的 appSettings 裡,所以在程式中可以很輕易的取得 SMTP Server 的 IP,不過當遇到 SMTP Server 需要登入時,就會需要修改程式碼,這樣頗為麻煩,因為可能網站內會發信的地方可能不少。
我們以往的作法,在發信時的程式如下:
而需要輸入 SMTP 驗證的時候,就要明確指定 SmtpClient 的 Credentials 屬性,如下範例:
若是能將這些程式碼都能夠改成用宣告的方式移進去 web.config 的話,之後所有使用到 SmtpClient 的地方就不用費心設定了。以下這段範例是擺在 web.config 跟 <system.web> 相同階層的位置:
加上去之後,程式碼就能簡化成以下程式碼,乾淨而清爽:
另外,若要手動取得 web.config 中的 mailSettings 設定值,可以參考以下程式:
<system.net>
</system.net>
如下:设置stmp邮件发送的配置
XML/HTML代码
//父元素:configuration(提供所有名称空间的配置)
<system.net>
//这里还可以加入如下元素的设置
//authenticationModules:设置用来验证WEB请求的模块
//connectionManagement:设置WEB服务器最大连接数
//defaultProxy:设置http的代理服务器
//mailSettings:配置smtp
//requestCaching:控制网络请求缓存机制
//settings:为System.NET配置基本网络选项
//<webRequestModules>元素(网络设置):指定模块从WEB服务器请求信息。
<mailSettings>
//deliveryMethod设置邮件发送方式,这里是网络形式
<smtp deliveryMethod="Network" from="xxx@yyy.com" >
//host邮件发送服务器
//userName发送邮件时,用来进行身份验证的用户名
//password如下验证时的密码
<network host="smtp.yyy.com" userName="xxx@yyy.com" password="zzzzzzz" />
</smtp>
</mailSettings>
</system.net>
以编程的方式获取web.config里的smtp配置
NetSectionGroup类
命名空间
System.Net.Configuration:为应用程序提供了以编程方式访问和更新配置文件System.Net命名空间下的设置的类。
程序集
System
定义:
public sealed class NetSectionGroup : ConfigurationSectionGroup
说明:
这个类提供了以程序方式访问存储在配置文件里的信息。
这个类和网络设置文档里的system.net元素(网络设置)相对应。
这部分的为下列名称空间提供配置设置:
System.Net
System.Net.Cache
System.Net.Mail
在程序里读取configuration/system.net/mailSettings/stmp配置
C#代码
//NetSectionGroup在上面已经介绍过了
//GetSectionGroup从指定的配置文件获取system.net的配置
//WebConfigurationManager.OpenWebConfiguration
//打开应用程序根目录下的web.config生成System.Configuration.Configuration对象实例
SmtpSection cfg = NetSectionGroup.GetSectionGroup(WebConfigurationManager.OpenWebConfiguration("~/web.config")).MailSettings.Smtp;
发送电子邮件
C#代码
try{
//实例化一个邮件消息对象
MailMessage email = new MailMessage(cfg.From, mailto);
email.IsBodyHtml = true;
email.Body = "要发送的邮件内容,上面已经设置可以支持html内容,例外还可以通过指定email.BodyEncoding属性设置邮件内容的编码";
email.Subject = "邮件主题,通过指定email.SubjectEncoding属性设置邮件主题的编码";
//实例化smtp客服端对象,用来发送电子邮件
System.Net.Mail.SmtpClient stmp = new SmtpClient(cfg.Network.Host);
//设置是否需要发送是否需要身份验证,如果不需要下面的credentials是不需要的
stmp.UseDefaultCredentials = true;
stmp.Credentials = new System.Net.NetworkCredential(cfg.Network.UserName, cfg.Network.Password);
//发送邮件
stmp.Send(email);
}
catch (Exception ex)
{ // }
===================================
以往我們發信都會將 SMTP Server 的 IP 位址設定在 web.config 的 appSettings 裡,所以在程式中可以很輕易的取得 SMTP Server 的 IP,不過當遇到 SMTP Server 需要登入時,就會需要修改程式碼,這樣頗為麻煩,因為可能網站內會發信的地方可能不少。
我們以往的作法,在發信時的程式如下:
SmtpClient smtp = new SmtpClient( System.Web.Configuration.WebConfigurationManager.AppSettings["SmtpHost"]); smtp.Send(msg);
而需要輸入 SMTP 驗證的時候,就要明確指定 SmtpClient 的 Credentials 屬性,如下範例:
SmtpClient smtp = new SmtpClient( System.Web.Configuration.WebConfigurationManager.AppSettings["SmtpHost"]); smtp.Credentials = new NetworkCredential("MyAccount", "ThisIsPassword"); smtp.Send(msg);
若是能將這些程式碼都能夠改成用宣告的方式移進去 web.config 的話,之後所有使用到 SmtpClient 的地方就不用費心設定了。以下這段範例是擺在 web.config 跟 <system.web> 相同階層的位置:
<system.net> <mailSettings> <smtp deliveryMethod="Network"> <network defaultCredentials="false" host="Your.SMTP.Server" port="25" userName="MyAccount" password="ThisIsPassword" /> </smtp> </mailSettings> </system.net>
加上去之後,程式碼就能簡化成以下程式碼,乾淨而清爽:
SmtpClient smtp = new SmtpClient(); smtp.Send(msg);
另外,若要手動取得 web.config 中的 mailSettings 設定值,可以參考以下程式:
Configuration config = WebConfigurationManager.OpenWebConfiguration(HttpContext.Current.Request.ApplicationPath); MailSettingsSectionGroup settings = (MailSettingsSectionGroup)config.GetSectionGroup("system.net/mailSettings"); Response.Write("SMTP 主機: " + settings.Smtp.Network.Host + "<br />"); Response.Write("SMTP 埠號: " + settings.Smtp.Network.Port + "<br />"); Response.Write("SMTP 帳號: " + settings.Smtp.Network.UserName + "<br />"); Response.Write("SMTP 密碼: " + settings.Smtp.Network.Password + "<br />"); Response.Write("預設寄件者:" + settings.Smtp.From + "<br />");
相关文章推荐
- asp.net 自动发送激活邮件,不需修改web.config配置文件
- 通过配置文件(web.config)实现邮件发送
- PasswordRecovery控件发送邮件配置文件web.config设置
- 利用XML序列化和Asp.Net Web缓存实现站点配置文件
- ASP.NET webUploader上传大视频文件相关web.config配置
- ASP.NET 中 整个站点web.config 与 不同文件夹下的web.config 的 多web.config 相关配置
- C#单元测试需要创建config文件才能实现webconfig里面的配置
- ASP.Net Web.Config文件配置之配置Session变量的生命周期
- 利用CDO实现邮件阅读或发送回执功能 For .Net
- net中通过配置WebConfig设置文件上传的属性
- ASP.NET配置文件Web.config
- [.Net码农]如何在ASP.NET的web.config配置文件中添加MIME类型
- LOG4J的配置..实现了输出到控制台、文件、回滚文件、发送日志邮件
- asp.net atlas中web.config的配置文件
- ASP.NET数据库连接字符串写在config.web配置文件中(2)
- ASP.NET通过配置Web.config文件提高手动绑定数据库效率的一个简单方法,不用每次手动连接数据库地址,或者数据库地址变更时只改一处即可。
- asp.net——web.config文件的配置
- C#/ASP.NET应用程序配置文件app.config/web.config的增、删、改操作
- C#/ASP.NET应用程序配置文件app.config/web.config的增、删、改操作,无法为请求的 Configuration 对象创建配置文件。
- ASP.NET(C#)应用程序配置文件app.config/web.config的增、删、改操作