原文:利用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. Vijos P1881 闪烁的星星 (加强自己多一点。。)

    假设每次查询不是整个长度,但[x, y]此时间间隔. . 闲来无事写的,感觉是正确的.这将成为合并范围. #include <cstdio> #include <cstring> ...

  2. 【原创】shadowebdict开发日记:基于linux的简明英汉字典(四)

    全系列目录: [原创]shadowebdict开发日记:基于linux的简明英汉字典(一) [原创]shadowebdict开发日记:基于linux的简明英汉字典(二) [原创]shadowebdic ...

  3. 数据结构c字符串操作语言版本

    #include<stdio.h> #include<malloc.h> #include<string.h> //结构的定义字符串 typedef struct ...

  4. basename, dirname 在C语言中的使用

    basename作用是得到特定的路径中的最后一个'/',后面的内容 如/usr/bin,得到的内容就是bin 如果/sdcard/miui_recovery/backup 得到的内容就是backup ...

  5. UVA - 12338 Anti-Rhyme Pairs (哈希)

    Description D Anti-Rhyme Pairs Input: Standard Input Output: Standard Output Often two words that rh ...

  6. memset功能的具体说明

    1.void *memset(void *s,int c,size_t n)总的效果:内存空间开辟了 s 第一 n 字节的值设置为一个值 c. 2.样本#include void main(){cha ...

  7. iis6开户gzip 网站属性里面没有服务选项卡

    请注意一点,是直接在名为“网站”的文件夹上面右键选择属性,不是去点下面建立的某一个网站.开户GZIP是整台服务器上面的虚拟主机都同时开启的,不对针某一个单独网站. 开启Gzip具体步骤: 1. 在 & ...

  8. MarkdownPad怎么显示表格

    工具 >选项 > Markdown >Markdown处理器 改为 “Markdown(扩展)”即可. 下载地址 http://www.xdowns.com/soft/1/95/20 ...

  9. 构建安全的Xml Web Service系列之wse之错误代码详解

    原文:构建安全的Xml Web Service系列之wse之错误代码详解 WSE3.0现在还没有中文版的可以下载,使用英文版的过程中,难免会遇到各种各样的错误,而面对一堆毫无头绪的错误异常,常常会感到 ...

  10. Spark 1.0.0版本发布

    前言 如今Spark终于迈出了里程碑一步,1.0.0标记的版本号出版物Spark1.0时代.1.0.0版本号不仅增加了非常多新特性.而且提供了更好的API支持.Spark SQL作为一个新的组件增加. ...