利用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 ...
随机推荐
- 【leetcode】LRU
import java.util.HashMap; import java.util.Map; public class LRUCache { private int capacity; privat ...
- 第1周 SQL Server 如何执行一个查询
原文:第1周 SQL Server 如何执行一个查询 大家好,欢迎来到第1周的SQL Server性能调优培训.在我们进入SQL Server性能调优里枯燥难懂的细节内容之前,我想通过讲解SQL Se ...
- SQL server 表数据改变触发发送邮件
今天遇到一个问题,原有生产系统正在健康运行,现需要监控一张数据表,当增加数据的时候,给管理员发送邮件. 领到这个需求后,有同事提供方案:写触发器触发外部应用程序.这是个大胆的想法啊,从来没写过这样的触 ...
- Codeforces Helpful Maths
Xenia the beginner mathematician is a third year student at elementary school. She is now learning t ...
- [LeetCode145]Binary Tree Postorder Traversal
题目: Given a list, rotate the list to the right by k places, where k is non-negative. For example:Giv ...
- NGUI判断是否点击到UI控件
注意:UI应加上Box Collider 1.射线检测 UICamera发一条射线,射线碰到了东西就说明点击到了UI Ray ray=UICamera.mainCamera.ScreenPointTo ...
- 简单的dialog菜单
本文介绍的是我自己做的一个简单的dialog菜单,可以直接植入到类中. 方法代码: /** 显示一个靠右上的dialog列表菜单*/private void showTopBarRightButton ...
- eclipse在maven项目交付svn忽略简介
文章来源:http://blog.csdn.net/chaijunkun/article/details/34805385,转载请注明. 不时因为它将有关鲍恩梳理,它会做出相应的内容不变.文. ecl ...
- iOS发展- backBarButtonItem 颜色/文字修改
iOS7之后. 默认返回button字体颜色为蓝色, 在父母的陈列柜VC(老界面)的title 假设做出改变, 通过下面的方法可以: 1. 更改字体颜色 (1) 在plist里面, 加View con ...
- Java中导入、导出Excel
原文:Java中导入.导出Excel 一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已 ...