利用System.Net.Mail 的SmtpClient发送邮件
原文:利用System.Net.Mail 的SmtpClient发送邮件
几个月前总结过关于Jmail发送邮件,当时用Jmail发送邮件发送速度有点慢(可能对Jmail了解不是很多).现在改为用微软提供的SmtpClient来发送邮件。
MailMessage 用于构造可以使用SmtpClient类传输到Smtp服务器以便传递的电子邮件;
使用MailMessage初始化MailMessage对象时,可以将电子邮件的发信人,收件人,主题和正文指定为参数。这些参数也可能被设置,或者使用MailMessage对象上的属性访问。
常用的属性:
附件 Attachments
密送 bcc
抄送 cc
Content-Type bodyEncoding/subjectEncoding
邮件正文 body
收件人 To
发件人 From
Subject sujbect
使用AlternateViews属性指定一个电子邮件不同格式的副本,如果发送HTML格式的邮件,可能希望同时提供邮件的纯文本格式,以防止一些收件人使用的电子邮件阅读程序无法显示html内容,另外这是我们使用body属性指定文本格式。
下面用两种方式发邮件:
ArrayList list = new ArrayList();
list.Add("*****@neotrident.com");
list.Add("*****@gmail.com");
list.Add("*****@126.com");
list.Add("*****@qq.com");
list.Add("*****@yahoo.com.cn");
list.Add("*****@tarena.com.cn");
list.Add("*****@me.com");
MailMessage mailMessage = new MailMessage();
for (int i = ; i < list.Count; i++)
{
MailAddress toAddress = new MailAddress(list[i].ToString());
mailMessage.To.Add(toAddress);//收件人
mailMessage.CC.Add(toAddress);//抄送
mailMessage.Bcc.Add(toAddress);//密送
}
string fileName = @"E:\2012年Q2新员工培训.pdf";
Attachment attachment = new Attachment(fileName); mailMessage.Attachments.Add(attachment);
mailMessage.From = new MailAddress("发件人邮箱地址", "**科技有限公司");
mailMessage.Subject = "hello";
mailMessage.SubjectEncoding = System.Text.Encoding.Unicode;
mailMessage.Body = "hello world";
mailMessage.BodyEncoding = System.Text.Encoding.Unicode;
string body = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">";
body += "<HTML><HEAD><META http-equiv=Content-Type content=\"text/html; charset=utf-8\">";
body += "</HEAD><BODY><DIV><FONT face=Arial color=#ff0000 size=2>this is some HTML text";
body += "</FONT></DIV></BODY></HTML>";
ContentType type = new ContentType("text/html");
AlternateView view = AlternateView.CreateAlternateViewFromString(body, Encoding.Unicode, "text/html");
mailMessage.AlternateViews.Add(view);
SmtpClient client = new SmtpClient("smtp.126.com");
client.Credentials = new System.Net.NetworkCredential("发件人邮箱地址", "邮箱密码");
client.Send(mailMessage);
第二种利用:SendAsync,
将指定的电子邮件发送到 SMTP 服务器以便传递。 此方法不会阻止调用线程,并允许调用方将对象传递给操作完成时调用的方法。第二种方式要在页面中设置Async="true"
protected void Page_Load(object sender, EventArgs e)
{
ArrayList list = new ArrayList();
list.Add("***@neotrident.com");
list.Add("***@gmail.com");
list.Add("***@126.com");
list.Add("***@qq.com");
list.Add("***@yahoo.com.cn");
list.Add("***@tarena.com.cn");
list.Add("***@me.com");
MailMessage mailMessage = new MailMessage();
for (int i = ; i < list.Count; i++)
{
MailAddress toAddress = new MailAddress(list[i].ToString());
mailMessage.To.Add(toAddress);//收件人
mailMessage.CC.Add(toAddress);//抄送
mailMessage.Bcc.Add(toAddress);//密送
}
string fileName = @"E:\2012年Q2新员工培训.pdf";
Attachment attachment = new Attachment(fileName); mailMessage.Attachments.Add(attachment);
mailMessage.From = new MailAddress("发件人地址", "**科技有限公司");
mailMessage.Subject = "hello";
mailMessage.SubjectEncoding = System.Text.Encoding.Unicode;
mailMessage.Body = "hello world";
mailMessage.BodyEncoding = System.Text.Encoding.Unicode;
string body = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">";
body += "<HTML><HEAD><META http-equiv=Content-Type content=\"text/html; charset=utf-8\">";
body += "</HEAD><BODY><DIV><FONT face=Arial color=#ff0000 size=2>this is some HTML text";
body += "</FONT></DIV></BODY></HTML>";
ContentType type = new ContentType("text/html");
AlternateView view = AlternateView.CreateAlternateViewFromString(body, Encoding.Unicode, "text/html");
mailMessage.AlternateViews.Add(view);
SmtpClient client = new SmtpClient("smtp.126.com");
client.Credentials = new System.Net.NetworkCredential("发件人地址", "密码");
//client.Send(mailMessage);
client.SendCompleted += new SendCompletedEventHandler(client_SendCompleted);
string userState = "test message1";
client.SendAsync(mailMessage, userState);
if (mailsent == false)
{
client.SendAsyncCancel();
}
Response.Write("Goodbye"); }
static bool mailsent = false;
void client_SendCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
string token = (string)e.UserState;
if (e.Cancelled)
{
Response.Write(string.Format("{0} Send canceled.",token));
}
if (e.Error != null)
{
Response.Write(string.Format("[{0}] {1}", token, e.Error));
}
else
{
Response.Write("Message sent");
}
mailsent = true;
}
就这可以用2种方式,以上代码包括发送附件,to,bcc,cc,正文内容的不同格式(html)
利用System.Net.Mail 的SmtpClient发送邮件的更多相关文章
- System.net.mail 使用ssl发送邮件失败
我采用了.net 的自带组件System.Net.Mail发送邮件,主要是在客户注册网站成功的时候发条欢迎邮件,最近邮件无法发送了,看了下腾讯smtp邮件配置,所有的邮件发送都换成ssl了,之前用的是 ...
- 利用System.Net.Mail 发送邮件
我这里只是试了一下发mail的功能,感觉.net自带的发mail是比较全的,还是直接上我的code 参数文章:System.Net.Mail 发送邮件 SMTP协议 using System; usi ...
- 利用System.Net.Mail和多线程实现邮件发送
对于邮件发送,一般来说,程序会响应超过1秒,这样对于用户体验来说,让用户等待的时间过长,而且发送的邮件越多时间就越长,所以这里我利用了线程的来处理邮件发送这种耗时的工作,废话不多说,直接上代码 pri ...
- System.Web.mail ----虚拟发件人发送邮件
转载别人的 使用SMTP发送邮件 说到邮件发送,先提一下SMTP. SMTP的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议.它是一组用于从源地址到目的 ...
- System.net.mail 腾讯ssl发送邮件超时
我采用了.net 的自带组件 System.Web.Mail.MailMessage发送邮件,主要是在客户注册网站成功的时候发条欢迎邮件,最近邮件无法发送了,看了下腾讯smtp邮件配置,所有的邮件发送 ...
- C#利用System.Net发送邮件(带 抄送、密送、附件、html格式的邮件)
net2.0后,C#可以利用System.Net发送邮件了. 代码整理如下: 3. 增加IProcessMessage类,定义了一个消息方法,用于消息传递 /********************* ...
- 在.net程序中使用System.Net.Mail来发送邮件
System.Net.Mail是微软自家提供的工具,在.net程序中可以使用该空间中的SmtpClient实例来实现邮件的发送. 使用System.Net.Mail空间与Web.config配置相配合 ...
- asp.net 发送邮件代码 System.Net.Mail
前台页面 SendEmail.aspx 代码 using System.Net.Mail;using System.Net; <h2> 发送电子邮件演示 </h2> <t ...
- C#使用 System.Net.Mail发送邮件功能
.NET 里包含了很多很丰富的邮件发送与接受的API在 System.Net.Mail命名空间里,使得我们开发发送和接受邮件相关功能变得简单,下面是一个简单发送邮件的功能: private void ...
随机推荐
- shell程序之逐行读取一文件里的參数且使用此參数每次运行5分钟
/********************************************************************* * Author : Samson * Date ...
- 怎样在Android开发中FPS游戏实现的两种方式比较
怎样在Android开发中FPS游戏实现的两种方式比较 如何用Android平台开发FPS游戏,其实现过程有哪些方法,这些方法又有哪些不同的地方呢?首先让我们先了解下什么是FPS 英文名:FPS (F ...
- Oracle 11G CRUD操作监控单个表
前言: 线上oracle数据库有张表的数据有些乱,依据应用db的log和应用的log也没有检查出来谁改动了.所以决定把这张单表做个具体的insert.update.delete监控.一:使用数据 ...
- cocos2d-x于android在call to OpenGL ES API with no current context
一.问题: 正在使用JNI离Java(Android)侧 打回来C++(Cocos2d-x)该函数返回消息.Cocos2d-x花掉了 看看 Eclipse的Log中.显示 有 call to Open ...
- sails 相关文章
Node 框架之sails http://cnodejs.org/topic/555c3c82e684c4c8088a0ca1
- java反射机制性能优化
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.uti ...
- [渣译文] SignalR 2.0 系列: SignalR简介
原文:[渣译文] SignalR 2.0 系列: SignalR简介 英文渣水平,大伙凑合着看吧,并不是逐字翻译的…… 这是微软官方SignalR 2.0教程Getting Started with ...
- 如何在ASP.NET MVC 中获取当前URL、controller、action
一.URL的获取很简单,ASP.NET通用: [1]获取 完整url (协议名+域名+虚拟目录名+文件名+参数) string url=Request.Url.ToString(); [2]获取 虚拟 ...
- PHP之运用CI用钩子实现URL权限控制————————【Badboy】
<span style="background-color: rgb(247, 252, 255); font-family: Verdana, Arial, Helvetica, s ...
- 具体的例子来教你怎么做LoadRunner结果分析
LoadRunner 解的地方--測试结果的分析.其余的录制和加压測试等设置对于我们来讲通过几次操作就能够轻松掌握了.针对 Results Analysis 我用图片加文字做了一个样例,希望通过样例能 ...