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

ASP.NET -- 邮件发送

2011-09-25 14:36 411 查看


using System.Net.Mail;//引入这个命名空间

1.同步发送,程序将被阻塞

protected void Button1_Click(object sender, EventArgs e)
{
string path = Server.MapPath("~/uploadfiles/" + FileUpload1.FileName);//FileUpload1控件
FileUpload1.SaveAs(path);//保存上传的文件
MailMessage mail = new MailMessage();
mail.From = new MailAddress("xxx@qq.com", "发件人");//发件人地址,第二个参数表示发件人,可不要,
mail.To.Add(new MailAddress("xxxx@126.com"));//收件人地址
mail.Priority = MailPriority.High;  //优先级
mail.Subject = "主题-发送时间:" + DateTime.Now;//主题
mail.Body = "<a href='http://www.qq.com'>邮件内容</a>";//发送的正文
mail.IsBodyHtml = true;//是否支持html的
Attachment MsgAttach = new Attachment(path);//获取刚刚上传的文件的地址,
mail.Attachments.Add(MsgAttach);//添加到附件
SmtpClient server = new SmtpClient();//邮箱服务器对象
server.Host = "smtp.qq.com";//服务器主机
server.Credentials = new System.Net.NetworkCredential("pwd", "xxxxxx");//个人账号和密码
server.Send(mail);

//异步发送, 会进入回调函数SendCompletedCallback,来判断发送是否成功

}


2.异步发送 // 异步发送必须在:<%@ Page%>添加Async="true"

protected void Button2_Click(object sender, EventArgs e)
{
try
{
MailMessage mail = new MailMessage();
mail.From = new MailAddress("xxx@qq.com", "发件人");
mail.To.Add(new MailAddress("xxx@126.com"));
mail.Subject = "主题-发送时间:" + DateTime.Now;
mail.Body = "<a href='http://www.qq.com'>邮件内容</a>";
mail.IsBodyHtml = true;

SmtpClient server = new SmtpClient();
server.Host = "smtp.qq.com";
server.Credentials = new System.Net.NetworkCredential("pwd", "xxxxxx");
server.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback);//回调函数
string userState = "测试";
server.EnableSsl = true;
server.SendAsync(mail, userState);
ClientScript.RegisterClientScriptBlock(this.GetType(), "success", "<script>alert('发送成功')</script>");
}
catch(SmtpException ex)
{
ClientScript.RegisterClientScriptBlock(this.GetType(), "fail", "<script>alert('发送失败,原因是:"+ex.Message+"')</script>");
}
private static void SendCompletedCallback(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{

if (e.Cancelled)  //邮件发送被取消
{
}

if (e.Error != null)   //邮件发送失败
{
}

else   //发送成功
{
}

}


当然有外国公司已经做好了现成的dll组件专门用于发送邮件,功能很强大,.net里面主要用到这2个dll

Dimac.JMail.dll

Dimac.JMail.Smtp.dll

网上有很多这关于JMail的文章

这2个dll和相关说明的下载地址:http://download.csdn.net/download/ccsnetmm/1903959。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: