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
  
  

asp.net 异步群发邮件时遭遇到的问题 ddddddddd-执着-iteye技术网站相关推荐

  1. asp.net 异步群发邮件时遭遇到的问题 ddddddddd

    客户要求为他的网站注册用户群发邮件 网站注册用户有9860名,因为注册时需要用户必须提供电子邮件,因为要对所有的9860名用户发送 如果采用主线程发送,必然造成连接超时或是漫长的用户等待,因而采用了异 ...

  2. Asp.Net异步页面处理(转)

    原文地址: http://www.blogcn.com//User8/flier_lu/blog/27401974.html 与 ASP.NET 1.0 相比,ASP.NET 2.0 的各方面改进可以 ...

  3. 详解 ASP.NET异步

    在前文中,介绍了.NET下的多种异步的形式,在WEB程序中,天生就是多线程的,因此使用异步应该更为谨慎.本文将着重展开ASP.NET中的异步. [注意]本文中提到的异步指的是服务器端异步,而非客户端异 ...

  4. php邮箱群发,php异步群发邮件

    原标题:php异步群发邮件 当程序执行群发邮箱的时候,会出现等待程序反馈时间太长 这对于用户体验来说是很不好的,用户大多会在程序没有执行完就关闭程序,这样发送邮件也会中断,所以我们的解决思路应该是用异 ...

  5. ASP.Net TextBox只读时不能通过后台赋值取值

    ASP.Net TextBox只读时不能通过后台赋值取值 今天在开发一个asp.net的页面遇到了TextBox设置了ReadOnly属性,在js中赋值后,后台代码取不到值的情况,经过在网上查找,找到 ...

  6. Inside ASP.NET 2.0-即时编译系统

     Inside ASP.NET 2.0-即时编译系统      Inside ASP.NET 2.0-即时编译系统 文/ 黄忠成(原文刊登于Run! PC) 从ASP.NET 1.1 到2.0,编译系 ...

  7. 转:关于ASP操作Access数据库时出现死锁.ldb的解决方法

    Asp操作Access数据库时出现死锁.ldb导致网站访问缓慢的问题描述 最近asp网站出现数据库错误,在ftp登陆后发现原来的后缀MDB文件多了一个后缀LDB文件,是自动被锁,在一天某个时间段内打不 ...

  8. multisim安装后无法连接数据库_计算机重装系统时遭遇错误意外重启后无法安装,这是什么原因?...

    展开全部 大家好,我是大明,计算机重装系统时遭遇"错误意外重启后无法安装"提示其实并不多见e68a8462616964757a686964616f31333433653934,那么 ...

  9. Flink 异步IO时 java.util.concurrent.TimeoutException: Async function call has timed out.

    Flink 异步IO时 timeout报错 java.lang.Exception: An async function call terminated with an exception. Fail ...

最新文章

  1. .Net中如何操作IIS(源代码)
  2. 你的大脑里有AI吗?
  3. 设计原则:公理系统在编程中的运用
  4. UNIX再学习 -- 线程控制
  5. codeforces1554 E. You(思维+数学+转化)
  6. Ubuntu学习(应用集合、命令行以及遇到的问题)
  7. turbo c 2.0 官方下载_iMyFone MintPDF英文版官方下载2.0.10
  8. 修改 xweibo 的memcache代码,让xweibo支持wincache,加快xweibo速度
  9. 怎么用imp命令把dmp文件从本地导入到远处的数据库服务器,Oracle 数据库导入导出dmp文件...
  10. oracle 简版客户端instantclient使用 oledb ODAC组件使用
  11. x86、amd、arm和GPU
  12. HTML期末作业-我的大学生活
  13. 视频教程-网络营销-网站盈利方式/淘宝客网络赚钱/广告联盟-其他
  14. 如何最简单、通俗地理解Python的pandas库?
  15. VIVE™在MWC上海展示生态全景,虚拟现实行业新趋势初见端倪
  16. WLAN网络配置,旁挂AC
  17. 月薪60K技术专家,在阿里巴巴是什么水平?
  18. RTOS系统 音频player对比分析
  19. ssrf漏洞php代码审计1
  20. [Leetcode]5920. 分配给商店的最多商品的最小值

热门文章

  1. 北京理工大学金旭亮老师C#(44—Textbox)
  2. Java基准测试工具JMH详解
  3. matlab函数定义详解
  4. 计算机启动后桌面无图标,电脑开机后桌面图标没有显示
  5. WSAStartup() 详解
  6. 手写一个@MapperScan扫描器
  7. BSV Planaria框架技术总结二 Bitquery
  8. 最小误差阈值分割 matlab,原创:最小包容区域法处理圆度误差的程序算法
  9. Luo's oj P1916 简单的序列(bracket)
  10. win8服务器系统教程,win8连接远程服务器教程