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

C#发送邮件

2011-12-29 15:38 141 查看
ASP.NET 2.0 中发送电子邮件变得非常简单。发送电子邮件的类库主要在命名空间System.Net.Mail中,在这个命名空间中有两个核心类是:

·
MailMessage:描述一个电子邮件消息;它拥有From,To,Subject,Body等属性;

·
SmtpClient:把一个指定的MailMessage实例发送到一个指定的SMTP服务器。

发送电子邮件的一般步骤是:

1.创建一个MailMessage对象;

2.赋给它的From,To,Subject,Body等属性;

3.创建一个SmtpClient类实例;

4.指定关于使用该SMTP服务器的细节(如果它们没有在Web.config中指定);

5.经由SmtpClient对象的Send方法发送该MailMessage。

下面的代码演示了发送电子邮件的过程:


string mailServerName = "smtp.126.com"; //发送邮件的SMTP服务器


string mailFrom = "sender0624@126.com"; //发件人邮箱(用126的邮件服务器,就必须用126邮箱的用户名)


string mailTo = "supremezone@126.com"; //收件人邮箱


string subject = "用代码方式发送邮件";//邮件主题


string body = "这里是邮件正文了

"; //邮件正文




using (MailMessage message = new MailMessage(mailFrom, mailTo, subject, body))


{

//SmtpClient是发送邮件的主体,这个构造函数是告知SmtpClient发送邮件时使用哪个SMTP服务器

SmtpClient mailClient = new SmtpClient(mailServerName);

//将认证实例赋予mailClient,也就是访问SMTP服务器的用户名和密码

mailClient.Credentials = new NetworkCredential("sender0624", "111111");

//最终的发送方法

mailClient.Send(message);

}
上述方法是通过Code方式发送邮件的,而在Asp.Net
2.0中Framework考虑更多的是配置式,也就是通过config方式来进行应用程序的控制,减少程序参数硬编码,这个配置节属于<system.net>节下的。

首先在Web.config文件中增加如下配置节:


<system.net>


<!--如果是第三方smtp服务器,需要指定userName 和 password,并根据host指定发件人邮件地址from


测试发现from值必须是userName值加上指定的smpt服务器才行,而且是必须指定的


如果是本机smtp服务器,只需指定defaultCredentials="true"即可-->


<mailSettings>


<smtp deliveryMethod="Network" from ="sender0624@126.com" >


<network host="smtp.126.com" port="25" userName="sender0624" password="111111/>


</smtp>


</mailSettings>


</system.net>
[align=left]接下来是程序代码,你会发现配置方式较Code方式代码是多么简洁,而且避免了硬编码,Smtp信息是从配置文件中读取的。[/align]


using (MailMessage message = new MailMessage())






{


message.To.Add(new MailAddress("supremezone@126.com")); //收件人邮箱


message.Subject = "通过配置文件设置发送邮件";//邮件主题


message.Body = "这里是邮件正文了

"; //邮件正文




SmtpClient mailClient = new SmtpClient();


mailClient.Send(message);


}

相比Code方式,我们发现配置方式代码中省去了发件人邮箱,SMTP服务器和SMTP服务器认证的Credentials,代码变得相当简洁,更为重要的是这些信息可以在Web.config文件中配置,这就大大增加了程序的灵活性,这是推荐采用的方式。需要说明的一点,示例中的邮箱用户名和密码都是真实的,理论上运行该示例程序是可以正常发送邮件的,但发送邮件时程序会抛出异常“邮箱不可用。服务器响应为:
Óû§±»Ëø¶¨ ”,但如果Credentials认证信息换成我另一个126邮箱,却能正常发送邮件了,一直没能找到原因所在,将对SmtpClient发送邮件的稳定性做进一步的研究,也希望能得到大家的指导。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: