您的位置:首页 > 编程语言 > ASP

C#中发送邮件(以ASP.NET为例)

2011-10-20 22:59 411 查看
本文旨在介绍一种简单的发送邮件的方法:

发送邮件需要三步走:

一、配置web.config中的邮件服务属性

二、在程序中动态读取配置的服务信息

三、编写实现发送邮件的代码

打开web.config在configuration节点中加入以下代码(此处是以163邮箱为例),host为邮箱服务器的地址,port为25(都是这一个),userName为发送邮件的账号,

password为账号的密码。

<system.net>
<mailSettings>
<smtp>
<network host="smtp.163.com" port="25" userName="wangyafei_it@163.com" password="xxxx"/>
</smtp>
</mailSettings>
</system.net>


然后在代码中读取web.config配置的信息,都知道可以在其他的类库通过ConfigurationManager进行访问web.config,可以这个东西在web是无效的,还好有

System.Web.Configuration.WebConfigurationManager。

System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~/web.config");


通过OpenWebConfiguration("web.config的虚拟路径")(有些童鞋会发现在win7这句代码会出错,报错是不能找到 /目录,那是因为vs没有使用管理员登陆,退出vs

右键vs使用管理员打开即可),这个方法返回一个类型为Configuration 的对象,使用该对象可以进行访问web.config中的节点信息.

public sealed class NetSectionGroup : ConfigurationSectionGroup,这个类提供了以程序方式访问存储在配置文件里的信息。

这个类和网络设置文档里的system.net元素(网络设置)相对应;

GetSectionGroup从指定的配置文件获取system.net的配置;

WebConfigurationManager.OpenWebConfiguration打开应用程序根目录下的web.config生成System.Configuration.Configuration对象实例 ;

此处的ConfigurationAddress为在web中得到的Configuration对象.

Configuration ConfigurationAddress=System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~/web.config");

//SmtpSection表示 System.Net 配置文件中的 SMTP 节。

System.Net.Configuration.SmtpSection cfg =

System.Net.Configuration.NetSectionGroup.GetSectionGroup(ConfigurationAddress).MailSettings.Smtp;
//MailMessage 类的实例用于构造可使用 SmtpClient 类传输到
//SMTP 服务器以便传递的电子邮件。
MailMessage msg = new MailMessage();
msg.From = new MailAddress(FromAddress);   //发件人
msg.To.Add(ToAddress);  //收件人
msg.Subject = SubJect;    //主题
msg.Body = Content;   //邮件正文
msg.IsBodyHtml = true;
msg.BodyEncoding = System.Text.Encoding.UTF8;//正文编码

//SmtpClient 类用于将电子邮件发送到 SMTP 服务器以便传递
//Attachment, MailAddress ,MailMessage
SmtpClient smtp = new SmtpClient(cfg.Network.Host);
//指定 SmtpClient 是否使用安全套接字层 (SSL) 加密连接。
smtp.UseDefaultCredentials = false;
smtp.EnableSsl = false;
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;

//为基于密码的身份验证方案(如基本、简要、NTLM 和 Kerberos 身份验证)提供凭据
NetworkCredential Credential = new NetworkCredential();
Credential.UserName = cfg.Network.UserName;//得到smtp节点配置的UserName
Credential.Password = cfg.Network.Password;//得到smtp节点配置的Password
smtp.Credentials = Credential;
smtp.Send(msg);//调用Send发送邮件,参数为MailMessage 对象


一个简单的发送邮件就完成了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: