Microsoft .NET Framework 2.0实现发送邮件(Email)总结

本文介绍了如何使用.NET Framework 2.0中的MailMessage类和SmtpClient类进行邮件的同步和异步发送,并展示了如何配置SMTP主机及凭据。

在 .NET Framework 2.0的System.Net.Mail命名空间中新增的MailMessage类和SmtpClient类使我们很容易发送Email,SmtpClient类提供了同步和异步2种方式发送邮件.

同步发送邮件由于比较简单,请看代码

ContractedBlock.gif ExpandedBlockStart.gif Code
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->MailMessagemm=newMailMessage();

//发件人
mm.From=newMailAddress("aierong@126.com","aierong_126");

//收件人(可以是多个)
mm.To.Add(newMailAddress("aierong@qq.com"));
mm.To.Add(
newMailAddress("aierong@163.com"));

//抄送(CC)(可以是多个)
mm.CC.Add(newMailAddress("aierong@qq.com"));
mm.CC.Add(
newMailAddress("aierong@qq.com"));

//密件抄送(BCC)(可以是多个)
mm.Bcc.Add(newMailAddress("114298@qq.com"));
mm.Bcc.Add(
newMailAddress("10249102@qq.com"));

//主题
mm.Subject="邮件的主题1";

//邮件正文
mm.Body="body";

//附件(可以是多个)
mm.Attachments.Add(newAttachment(@"D:\Access.zip"));
mm.Attachments.Add(
newAttachment(@"D:\SetupReport.msi"));

SmtpClientsc
=newSmtpClient();
//设置SMTP主机的名称或IP地址
sc.Host="smtp.126.com";

stringUser="";
stringPassWord="";
//设置用于验证发件人身份的凭据
sc.Credentials=newSystem.Net.NetworkCredential(User,PassWord);

sc.Send(mm);

MessageBox.Show(
"ok");

要是邮件容量比较大,可以设置SmtpClient.Timeout属性(默认值为100 秒),以免超时。

当然,我们还可以用配置文件来指定SmtpClient对象的默认主机、端口和凭据值等属性。请看下面配置

ContractedBlock.gif ExpandedBlockStart.gif Code
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><system.net>
<mailSettings>
<smtp>
<networkpassword=""userName=""host="smtp.126.com"/>
</smtp>
</mailSettings>
</system.net>



异步发送邮件:
以上代码是基于同步的发送方式,利用SmtpClient.SendAsync方法可以很方便实现异步发送邮件

SendAsync方法描述如下:
public void SendAsync (
MailMessage message,
Object userToken
)

参数
message
包含要发送的消息的 MailMessage。
userToken
一个用户定义对象,此对象将被传递给完成异步操作时所调用的方法。
代码

ContractedBlock.gif ExpandedBlockStart.gif Code
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->MailMessagemm=newMailMessage();

//发件人
mm.From=newMailAddress("aierong@126.com","aierong_126");

//收件人(可以是多个)
mm.To.Add(newMailAddress("aierong@qq.com"));

//主题
mm.Subject="邮件的主题1";

//邮件正文
mm.Body="body";

//附件(可以是多个)
mm.Attachments.Add(newAttachment(@"D:\Access.zip"));

SmtpClientsc
=newSmtpClient();
//SmtpClient.SendCompleted事件,在异步电子邮件发送操作完成时调用
sc.SendCompleted+=newSendCompletedEventHandler(sc_SendCompleted);

//设置SMTP主机的名称或IP地址
sc.Host="smtp.126.com";

stringUser="aierong";
stringPassWord="aie100le";
//设置用于验证发件人身份的凭据
sc.Credentials=newSystem.Net.NetworkCredential(User,PassWord);
//异步发送邮件
sc.SendAsync(mm,"testmessage");


voidsc_SendCompleted(objectsender,AsyncCompletedEventArgse)
{
if(e.Error==null)
{
MessageBox.Show(
"发送成功");
//显示出来用户定义对象"testmessage"
MessageBox.Show(e.UserState.ToString());
}
else
{
MessageBox.Show(e.Error.Message);
}
}
http://aierong.cnblogs.com
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值