在 .NET Framework 2.0的System.Net.Mail命名空间中新增的MailMessage类和SmtpClient类使我们很容易发送Email,SmtpClient类提供了同步和异步2种方式发送邮件.
同步发送邮件由于比较简单,请看代码
<!--<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对象的默认主机、端口和凭据值等属性。请看下面配置
<!--<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
一个用户定义对象,此对象将被传递给完成异步操作时所调用的方法。
代码
<!--<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);
}
}
本文介绍了如何使用.NET Framework 2.0中的MailMessage类和SmtpClient类进行邮件的同步和异步发送,并展示了如何配置SMTP主机及凭据。
899

被折叠的 条评论
为什么被折叠?



