利用System.Net.Mail和多线程实现邮件发送
对于邮件发送,一般来说,程序会响应超过1秒,这样对于用户体验来说,让用户等待的时间过长,而且发送的邮件越多时间就越长,所以这里我利用了线程的来处理邮件发送这种耗时的工作,废话不多说,直接上代码
private string title;
/// <summary>
/// 发送标题
/// </summary>
public string Title
{
get { return title; }
set { title = value; }
}
private string body;
/// <summary>
/// 发送内容,可以包含html
/// </summary>
public string Body
{
get { return body; }
set { body = value; }
}
private List<string> toEmail = new List<string>();
/// <summary>
/// 发送给谁,可以多用户
/// </summary>
public List<string> ToEmail
{
get { return toEmail; }
set { toEmail = value; }
}
private string toDis;
/// <summary>
/// 发送给谁的描述
/// </summary>
public string ToDis
{
get { return toDis; }
set { toDis = value; }
}
private string fromDis;
/// <summary>
/// 发送人描述
/// </summary>
public string FromDis
{
get { return fromDis; }
set { fromDis = value; }
} public SendEmail(string title, string body, List<string> toEmail, string toDis, string fromDis)
{
this.title = title;
this.body = body;
this.toEmail = toEmail;
this.toDis = toDis;
this.fromDis = fromDis;
} #region 邮件发送方法
/// <summary>
/// 利用线程来发送邮件,减少系统响应时间
/// </summary>
public void WebEmail()
{
try
{
Thread thread = new Thread(new ThreadStart(SendWebEmail));
thread.Start();
}
catch
{
throw;
}
} public void SendWebEmail()
{
try
{
foreach (string toEmailName in this.ToEmail)
{
MailAddress from = new MailAddress(SendConfig.EmailName, this.FromDis); //SendConfig.EmailName是发送邮件的邮箱名称
MailAddress to = new MailAddress(toEmailName, this.ToDis);
MailMessage msg = new MailMessage(from, to);
msg.Priority = MailPriority.High; msg.Subject = this.Title;
msg.Body = this.Body;
msg.BodyEncoding = System.Text.Encoding.UTF8;
msg.IsBodyHtml = true; SmtpClient smtp = new SmtpClient();
smtp.Host = SendConfig.SMTP; //SendConfig.SMTP是发送邮件的邮箱的SMTP
smtp.UseDefaultCredentials = false; smtp.Credentials = new System.Net.NetworkCredential(SendConfig.EmailName, SendConfig.EmailPwd); //SendConfig.EmailPwd是发送邮件的邮箱的密码
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
smtp.Send(msg);
}
}
catch (Exception e)
{
throw;
}
}
#endregion
程序需要引用:
using System.Net.Mail;
using System.Threading;
这两个命名空间
利用System.Net.Mail和多线程实现邮件发送的更多相关文章
- 利用System.Net.Mail 的SmtpClient发送邮件
原文:利用System.Net.Mail 的SmtpClient发送邮件 几个月前总结过关于Jmail发送邮件,当时用Jmail发送邮件发送速度有点慢(可能对Jmail了解不是很多).现在改为用微软提 ...
- 利用System.Net.Mail 发送邮件
我这里只是试了一下发mail的功能,感觉.net自带的发mail是比较全的,还是直接上我的code 参数文章:System.Net.Mail 发送邮件 SMTP协议 using System; usi ...
- java使用javax.mail进行免费的邮件发送
1. 建议发送方使用阿里云邮箱https://mail.aliyun.com/,阿里云默认是开启个人邮箱pop3.smtp协议的,所以无需在阿里云邮箱里设置,pop3.smtp的密码默认邮箱登录密码, ...
- 利用EasySQLMAIL实现自动数据提取和邮件发送功能 (1)
转自:http://blog.sina.com.cn/s/blog_1549483b70102wioy.html 最近几个月每天都在发通报.过程很繁琐,动作很机械,整个人就是一部机器,执行SQL,填E ...
- System.net.mail 使用ssl发送邮件失败
我采用了.net 的自带组件System.Net.Mail发送邮件,主要是在客户注册网站成功的时候发条欢迎邮件,最近邮件无法发送了,看了下腾讯smtp邮件配置,所有的邮件发送都换成ssl了,之前用的是 ...
- System.net.mail 腾讯ssl发送邮件超时
我采用了.net 的自带组件 System.Web.Mail.MailMessage发送邮件,主要是在客户注册网站成功的时候发条欢迎邮件,最近邮件无法发送了,看了下腾讯smtp邮件配置,所有的邮件发送 ...
- Java 基于mail.jar 和 activation.jar 封装的邮件发送工具类
准备工作 发送邮件需要获得协议和支持! 开启服务 POP3/SMTP 服务 如何开启 POP3/SMTP 服务:https://www.cnblogs.com/pojo/p/14276637.html ...
- Java 使用 mail.jar 实现邮件发送
目录 准备工作 使用到的 jar 包 实现代码 准备工作 要想实现邮件发送, 需要先打开发送邮箱的 POP3/SMTP 服务,打开方式在 设置>帐户 中去打开,打开之后如果是qq邮箱会获得一个授 ...
- Spring Boot实战系列-----------邮件发送
快速导航 添加Maven依赖 配置文件增加邮箱相关配置 Service.Test项目代码构建 五种邮件发送类型讲解 文本邮件 html邮件 附件邮件 html内嵌图片邮件 模板邮件 问题汇总 添加ma ...
随机推荐
- 统计建模与R软件习题二答案
# 习题2 # 2.1 x=c(1,2,3) y=c(4,5,6) e=c(rep(1,3)) z=2*x+y+e;z x%*%y # 若x,y如答案那样定义为矩阵,则不能用%*%,因为,维数不对应, ...
- python: list[-1] 与 list[-1:] 的区别
>>> l '3.542485\t1.977398\t-1\r\n' >>> l.split() ['3.542485', '1.977398', '-1'] &g ...
- sunJCE or ibmJce,was服务器下使用des的注意点
最近开发了一个应用,在tomcat下一切ok,到was上有报错. 打开debug日志,没有异常?? 继续调查发现是我们的程序引用了一个sun很久以前的jar.这个jar需要单独打开message日志 ...
- awk的思维导图
- 转:40多个关于人脸检测/识别的API、库和软件
文章来自于:http://blog.jobbole.com/45936/ 自从谷歌眼镜被推出以来,围绕人脸识别,出现了很多争议.我们相信,不管是不是通过智能眼镜,人脸识别将在人与人交往甚至人与物交互中 ...
- 文本阴影:text-shadow
例如: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...
- MySQL执行外部sql脚本
1:-/mysql_test/test.sql create table student( sno int not null primary key auto_increment, sname ) n ...
- Android菜单详解(一)——理解android中的Menu
前言 今天看了pro android 3中menu这一章,对Android的整个menu体系有了进一步的了解,故整理下笔记与大家分享. PS:强烈推荐<Pro Android 3>,是我至 ...
- vector,list和deque区别
stl提供了三个最基本的容器:vector,list,deque. vector和built-in数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此它能非常好的支持随即存取,即[]操作符,但由 ...
- android 让一个控件按钮居于底部的几种方法
android 让一个控件按钮居于底部的几种方法1.采用linearlayout布局:android:layout_height="0dp" <!-- 这里不能设置fill_ ...