- 浏览: 17083 次
最新评论
asp.net 异步群发邮件时遭遇到的问题 ddddddddd-执着-iteye技术网站
2011年09月01日
客户要求为他的网站注册用户群发邮件
网站注册用户有9860名,因为注册时需要用户必须提供电子邮件,因为要对所有的9860名用户发送
如果采用主线程发送,必然造成连接超时或是漫长的用户等待,因而采用了异步发送的方式处理此群发
于是最初写了一个群发的类
#Region"群发邮件处理类"
'''
'''邮件群发异步处理类
'''
_
PublicClassBulkMail
Private_maxCountAsInteger=0
Private_currentCountAsInteger=0
Private_runStateAsBulkMailRunState=BulkMailRunState.Unkonw
Private_messageAsString
Private_listAsList(OfEntity.Member.OwnerIdentityEntity)
Private_threadAsThreading.Thread
Private_mailSubjectAsString
Private_mailBodyAsString
Private_configAsWeb.Config.WebConfig
'''
'''创建一个邮件群发实例
'''
'''邮件主题
'''邮件内容
PublicSubNew(ByValsubjectAsString,ByValbodyAsString)
_config=Web.Config.WebConfig.GetConfig
_mailSubject=subject
_mailBody=body
EndSub
'''
'''初始化发送事件
'''
'''信息集合
PublicSubSend(ByVallistAsList(OfEntity.Member.OwnerIdentityEntity))
_list=list
_thread=NewThreading.Thread(NewThreading.ThreadStart(AddressOfMe.SendMail))
_thread.Start()
EndSub
'''
'''异步发送邮件
'''
PrivateSubSendMail()
Try
_message="群发开始"
_runState=BulkMailRunState.Run
_currentCount=0
_maxCount=_list.Count
DimmailAsWeb.Mail.Mail
mail=NewWeb.Mail.Mail
mail.From=_config.SmtpEmail
mail.FromName=_config.SiteName
mail.isHtml=True
mail.Priority="high"
mail.Subject=_mailSubject
mail.Body=_mailBody
DimsmtpAsWeb.Mail.SmtpMail
smtp=NewWeb.Mail.SmtpMail
smtp.chkSmtp=_config.SmtpAuth
smtp.smtpPassWord=_config.SmtpLoginPassword
smtp.SmtpPort=_config.SmtpPort
smtp.SmtpServer=_config.SmtpServer
smtp.smtpUserName=_config.SmtpLoginName
ForEachinfoAsEntity.Member.OwnerIdentityEntityIn_list
_currentCount+=1
Ifinfo.EmailIsNotNothingAndAlsoinfo.Email.Contains("@")Then
mail.Recipient.Add(info.Email)
_message=String.Format("正在给{0}发送邮件",info.RealName)
_runState=BulkMailRunState.Run
mail.Subject=_mailSubject
mail.Body=_mailBody
smtp.Send(mail)
mail.Recipient.Clear()
EndIf
Next
_runState=BulkMailRunState.Over
_message="群发结束"
CatchexAsException
_runState=BulkMailRunState.Error
_message=ex.Message&ex.Source&ex.ToString&ex.InnerException.ToString
EndTry
EndSub
#Region"自定义属性"
'''
'''群发状态
'''
'''Thestateoftherun.
PublicReadOnlyPropertyRunState()AsBulkMailRunState
Get
Return_runState
EndGet
EndProperty
'''
'''群发邮件总数
'''
'''Themaxcount.
PublicReadOnlyPropertyMaxCount()AsInteger
Get
Return_maxCount
EndGet
EndProperty
'''
'''已发送数量
'''
'''Thecurrentcount.
PublicReadOnlyPropertyCurrentCount()AsInteger
Get
Return_currentCount
EndGet
EndProperty
'''
'''附加的信息
'''
'''Themessage.
PublicReadOnlyPropertyMessage()AsString
Get
Return_message
EndGet
EndProperty
#EndRegion
EndClass
然后把访类的实例存储在Session会话中,在客户端刷新读取发送进度并显示,在本地测试成功,于是发布到服务器上
客户发送邮件时反馈没有出现进度条,而是直接显示群发完成,但注册会员并未收到邮件
后测试发现是因为群发类把所有的信息存储在Session中,其中也包含了所有的会员信息,由于数据量极大,造成Sesson会话变量丢失,从而造成群发操作直接结束
后修改类
#Region"群发邮件处理类"
'''
'''邮件群发异步处理类
'''
_
PublicClassBulkMail
Private_maxCountAsInteger=0
Private_currentCountAsInteger=0
Private_runStateAsBulkMailRunState=BulkMailRunState.Unkonw
Private_messageAsString
Private_threadAsThreading.Thread
Private_mailSubjectAsString
Private_mailBodyAsString
Private_configAsWeb.Config.WebConfig
'''
'''创建一个邮件群发实例
'''
'''邮件主题
'''邮件内容
PublicSubNew(ByValsubjectAsString,ByValbodyAsString)
_config=Web.Config.WebConfig.GetConfig
_mailSubject=subject
_mailBody=body
EndSub
'''
'''初始化发送事件
'''
'''信息集合
PublicSubSend(ByVallistAsList(OfEntity.Member.OwnerIdentityEntity))
_thread=NewThreading.Thread(AddressOfMe.SendMail)
_thread.Start(list)
EndSub
'''
'''异步发送邮件
'''
Private
发表评论
-
我的ATL/ADO编程的曲折经历
2012-01-20 02:41 858我的ATL/ADO编程的曲折经 ... -
nosql生态系统
2012-01-20 02:41 772nosql生态系统 2011年06月 ... -
怎样采集淘宝宝贝的用户评价信息
2012-01-20 02:41 1092怎样采集淘宝宝贝的用户评价信息 2011年03月15日 ... -
绩效考核制度-KPI关健绩效目标考核
2012-01-19 10:24 712绩效考核制度-KPI关健绩 ... -
现场品管工作
2012-01-19 10:24 644现场品管工作 2010年10 ... -
保存文本文件到本地(as3.0)(转)
2012-01-19 10:24 1015保存文本文件到本地(as3.0)(转) 2010年10月09 ... -
Flex面试题及答案
2012-01-19 10:24 645Flex面试题及答案 2011年 ... -
flash音乐播放器 制作教程
2012-01-19 10:24 896flash音乐播放器 制作教程 2011年09月24日 ... -
驱动之路-内存管理机制及mmap方法
2012-01-17 03:05 605驱动之路-内存管理机制 ... -
Windows内存出错的几个解决方案2
2012-01-17 03:04 488Windows内存出错的几个解决方案2 2011年07月17 ... -
内存映射与DMA笔记
2012-01-17 03:04 1063内存映射与DMA笔记 2011 ... -
内存指令00报错
2012-01-17 03:04 610内存指令00报错 2010年07月16日 内存不能为re ... -
了解进程中的内存结构
2012-01-17 03:04 552了解进程中的内存结构 ... -
指导学生批改作文应把握哪些内容?
2012-01-16 01:38 795指导学生批改作文应把 ... -
对优秀老师的备课、作业批改等的评语
2012-01-16 01:38 1419对优秀老师的备课、作 ... -
作文批改要求与方法
2012-01-16 01:38 726作文批改要求与方法 20 ... -
作文批改也要创新。
2012-01-16 01:37 536作文批改也要创新。 2010年10月13日 ... -
难忘的作文评语
2012-01-16 01:37 704难忘的作文评语 2011年03月26日 双 ... -
在继承中的异常
2012-01-11 01:11 573在继承中的异常 2011年09月01日 public i ... -
Overview of DBA Cockpit for Oracle
2012-01-11 01:11 660Overview of DBA Cockpit for Ora ...
相关推荐
Vue3学习ddddddddd
most of the programs are for data structure
Format = ddddddddd X = 340 Y = 10 Width = 168 Interval = 1000 Size = 36 Weight = 700 CreateFont #--------------------------------- #--------------------------------- ICONXPBUTTON x = 10 y = 420 ...
matlab基础语法%% % 建议有C语言或其他编程基础,了解线性代数和矩阵相关知识 ...% 加*为了解内容 % 生成矩阵 % 直接法 a = [1,2,3;4,5,6;7,8,9]; % 冒号一维矩阵 a = 开始:步长:结束,步长为1可省略 ...
一个未完工的app
HiJson 里面包含64和32位的点击既能使用,用于解析json字符串,让结果整体更加清晰明了DDDDDDDDD
主要讲PCB中的布线中出现的各种问题。 dddddddddddddddddddd ddddddddd
String[] contents = {"aaaaa","bbbbb","cccccc","ddddddddd","不知道中文会不会乱码呢"}; //这个只是测试数据,具体要怎么样的形式保存待定 wr.writeRecord(contents); wr.close(); } catch ...
用MFC画的一个简单图ddddddddd
中国社会文化转型综论,内容很详尽ddddddddd
很强大的软件,百度开发,、。。。ddddddddd
整理的一份关于 前端面试 html css js 的文档 ddddddddd
51单片机汇编学习课件,很好很全面ddddddddd~~
想要的就下载吧 看看是不是你想要的 DDDDDDDDD
EMC方面的标准,希望有人能用到。支持一下。DDDDDDDDD
spi2wb 用SPI总线驱动Wishbone主总线。 协议 如下: 模式b01-> CPOL = 0 CPHA = 1 CS =低电平有效 spi2wb帧的组成如下: 8位模式 写框: MOSI : 1AAAAAAA DDDDDDDD ...MISO : ZZZZZZZZ DDDDDDDDD
台湾新代系统PLC编程软件 免安装版本 T型图编写 系统调试
DDDDDDDDDDDDDDDDDDDD
dddddddddddddddddddd
ghklg,cxbfbcxzc fffffffz