利用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 ...
随机推荐
- 第几天 AC 杭电
第几天? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- HEX和BIN文件的区别
以下的内容是从网上转载来的,原文地址:http://blog.csdn.net/zhangliang_571/article/details/8519469 在这里感谢原作者. 1,是在keil中编 ...
- SJA1000寄存器设置
在设置CAN控制器SJA1000的输出控制寄存器(OCR)时,由于电路图中只用到了TX0和RX0,所以只考虑OCTP0,OCTN0,OCPOL0.这里设置成了010.然后查了一下配置的表,如下所示: ...
- sqoop组件运行出错问题解决--com.mysql.jdbc.Driver
sqoop list-tables --connect jdbc:mysql://192.168.11.94:3306/huochetoudalian --username xxx -password ...
- [LeetCode 114] - 将树平面化为链表(Flatten Binary Tree to Linked List)
问题 给出一个二叉树,将其原地平面化为链表. 例如,给出: 1 / \ 2 5 / \ \ 3 4 6 平面化后的树看起来应该是这样: 1 \ 2 \ ...
- Host myCloudData.net on your own server (支持自建服务器)
http://www.myclouddata.net/#/home Host myCloudData.net on your own serverUse the myCloudData.net SDK ...
- Android双击返回键退出Activity的两种方法
在开发应用程序的时候,有一种功能是非常常用到的,那就是迅速双击返回按钮,然后实现退出Activity的功能.本人在网上看了很多资料代码,总结起来,主要有两种比较好的方式.一种是开线程延时执行,一种是记 ...
- JAVA 对象拷贝
1.java里的clone分为: A:浅复制(浅克隆): 浅复制仅仅复制所考虑的对象,而不复制它所引用的对象. b:深复制(深克隆):深复制把要复制的对象所引用的对象都复制了一遍. Java中对 ...
- pojo的序列化和反序列化
实例代码: package com.lky.pojo; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStrea ...
- Shiro-授权
把 realms 配置给SecurityManager 在认证的时候单个realm是这样配置的: <bean id="securityManager" class=" ...