1. using System.Net.Mail;//引入这个命名空间
  2. 1.同步发送,程序将被阻塞
  3.  1  protected void Button1_Click(object sender, EventArgs e)
    2 {
    3 string path = Server.MapPath("~/uploadfiles/" + FileUpload1.FileName);//FileUpload1控件
    4 FileUpload1.SaveAs(path);//保存上传的文件
    5 MailMessage mail = new MailMessage();
    6 mail.From = new MailAddress("xxx@qq.com", "发件人");//发件人地址,第二个参数表示发件人,可不要,
    7 mail.To.Add(new MailAddress("xxxx@126.com"));//收件人地址
    8 mail.Priority = MailPriority.High; //优先级
    9 mail.Subject = "主题-发送时间:" + DateTime.Now;//主题
    10 mail.Body = "<a href='http://www.qq.com'>邮件内容</a>";//发送的正文
    11 mail.IsBodyHtml = true;//是否支持html的
    12 Attachment MsgAttach = new Attachment(path);//获取刚刚上传的文件的地址,
    13 mail.Attachments.Add(MsgAttach);//添加到附件
    14 SmtpClient server = new SmtpClient();//邮箱服务器对象
    15 server.Host = "smtp.qq.com";//服务器主机
    16 server.Credentials = new System.Net.NetworkCredential("pwd", "xxxxxx");//个人账号和密码
    17 server.Send(mail);
    18
    19 //异步发送, 会进入回调函数SendCompletedCallback,来判断发送是否成功
    20
    21 }


  4. 2.异步发送            // 异步发送必须在:<%@ Page%>添加Async="true"
  5.  1  protected void Button2_Click(object sender, EventArgs e)
    2 {
    3 try
    4 {
    5 MailMessage mail = new MailMessage();
    6 mail.From = new MailAddress("xxx@qq.com", "发件人");
    7 mail.To.Add(new MailAddress("xxx@126.com"));
    8 mail.Subject = "主题-发送时间:" + DateTime.Now;
    9 mail.Body = "<a href='http://www.qq.com'>邮件内容</a>";
    10 mail.IsBodyHtml = true;
    11
    12 SmtpClient server = new SmtpClient();
    13 server.Host = "smtp.qq.com";
    14 server.Credentials = new System.Net.NetworkCredential("pwd", "xxxxxx");
    15 server.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback);//回调函数
    16 string userState = "测试";
    17 server.EnableSsl = true;
    18 server.SendAsync(mail, userState);
    19 ClientScript.RegisterClientScriptBlock(this.GetType(), "success", "<script>alert('发送成功')</script>");
    20 }
    21 catch(SmtpException ex)
    22 {
    23 ClientScript.RegisterClientScriptBlock(this.GetType(), "fail", "<script>alert('发送失败,原因是:"+ex.Message+"')</script>");
    24 }
    25 private static void SendCompletedCallback(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
    26 {
    27
    28 if (e.Cancelled) //邮件发送被取消
    29 {
    30 }
    31
    32 if (e.Error != null) //邮件发送失败
    33 {
    34 }
    35
    36 else //发送成功
    37 {
    38 }
    39
    40 }
  6. 当然有外国公司已经做好了现成的dll组件专门用于发送邮件,功能很强大,.net里面主要用到这2个dll
  7. Dimac.JMail.dll
  8. Dimac.JMail.Smtp.dll
  9. 网上有很多这关于JMail的文章
  10. 这2个dll和相关说明的下载地址:http://download.csdn.net/download/ccsnetmm/1903959。