原文:利用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属性指定文本格式。

下面用两种方式发邮件:

Send

   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"

SendAsync

  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发送邮件的更多相关文章

  1. System.net.mail 使用ssl发送邮件失败

    我采用了.net 的自带组件System.Net.Mail发送邮件,主要是在客户注册网站成功的时候发条欢迎邮件,最近邮件无法发送了,看了下腾讯smtp邮件配置,所有的邮件发送都换成ssl了,之前用的是 ...

  2. 利用System.Net.Mail 发送邮件

    我这里只是试了一下发mail的功能,感觉.net自带的发mail是比较全的,还是直接上我的code 参数文章:System.Net.Mail 发送邮件 SMTP协议 using System; usi ...

  3. 利用System.Net.Mail和多线程实现邮件发送

    对于邮件发送,一般来说,程序会响应超过1秒,这样对于用户体验来说,让用户等待的时间过长,而且发送的邮件越多时间就越长,所以这里我利用了线程的来处理邮件发送这种耗时的工作,废话不多说,直接上代码 pri ...

  4. System.Web.mail ----虚拟发件人发送邮件

     转载别人的 使用SMTP发送邮件   说到邮件发送,先提一下SMTP. SMTP的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议.它是一组用于从源地址到目的 ...

  5. System.net.mail 腾讯ssl发送邮件超时

    我采用了.net 的自带组件 System.Web.Mail.MailMessage发送邮件,主要是在客户注册网站成功的时候发条欢迎邮件,最近邮件无法发送了,看了下腾讯smtp邮件配置,所有的邮件发送 ...

  6. C#利用System.Net发送邮件(带 抄送、密送、附件、html格式的邮件)

    net2.0后,C#可以利用System.Net发送邮件了. 代码整理如下: 3. 增加IProcessMessage类,定义了一个消息方法,用于消息传递 /********************* ...

  7. 在.net程序中使用System.Net.Mail来发送邮件

    System.Net.Mail是微软自家提供的工具,在.net程序中可以使用该空间中的SmtpClient实例来实现邮件的发送. 使用System.Net.Mail空间与Web.config配置相配合 ...

  8. asp.net 发送邮件代码 System.Net.Mail

    前台页面 SendEmail.aspx 代码 using System.Net.Mail;using System.Net; <h2> 发送电子邮件演示 </h2> <t ...

  9. C#使用 System.Net.Mail发送邮件功能

    .NET 里包含了很多很丰富的邮件发送与接受的API在 System.Net.Mail命名空间里,使得我们开发发送和接受邮件相关功能变得简单,下面是一个简单发送邮件的功能: private void ...

随机推荐

  1. eclipse 于 Tomcat于 热部署 project

    eclipse在 Tomcat中热部署project 1.在eclipse中国安装一个tomcat插件:SysdeoEclipse Tomcat Launcher plugin(http://www. ...

  2. 数据结构:Binary and other trees(数据结构,算法及应用(C++叙事描述语言)文章8章)

    8.1 Trees -->root,children, parent, siblings, leaf; level, degree of element 的基本概念 8.2 Binary Tre ...

  3. java JNI开发

    Jni程序开发的一般操作步骤如下: l         编写java中的调用类 l         用javah生成c/c++原生函数的头文件 l         c/c++中调用需要的其他函数功能, ...

  4. 1pdf

    Document doc = new Document(new iTextSharp.text.Rectangle(564, 351));  PdfWriter writer= PdfWriter.G ...

  5. Prototype Pattern 原型模式

    7.6 原型模式总结 原型模式作为一种快速创建大量相同或相似对象的方式,在软件开发中应用较为广泛,很多软件提供的复制(Ctrl + C)和粘贴(Ctrl + V)操作就是原型模式的典型应用,下面对该模 ...

  6. BZOJ 3747 POI2015 Kinoman 段树

    标题效果:有m点,每个点都有一个权值.现在我们有这个m为点的长度n该序列,寻求区间,它仅出现一次在正确的点区间内值和最大 想了很久,甚至神标题,奔说是水的问题--我醉了 枚举左点 对于每个请求留点右键 ...

  7. oracle表空间查询维护命令大全之三(暂时表空间)史上最全

    --UNDO表空间汇总 --查看全部的表空间名字 SELECT NAME FROM V$TABLESPACE; --创建新的UNDO表空间,并设置自己主动扩展參数; CREATE UNDO TABLE ...

  8. t持久化与集群部署开发详解

    Quartz.net持久化与集群部署开发详解 序言 我前边有几篇文章有介绍过quartz的基本使用语法与类库.但是他的执行计划都是被写在本地的xml文件中.无法做集群部署,我让它看起来脆弱不堪,那是我 ...

  9. python udp编程实例

    与python tcp编程控制见 http://blog.csdn.net/aspnet_lyc/article/details/39854569 c++ udp/tcp 编程见 http://blo ...

  10. 乐在其中设计模式(C#) - 策略模式(Strategy Pattern)

    原文:乐在其中设计模式(C#) - 策略模式(Strategy Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 策略模式(Strategy Pattern) 作者:webabc ...