`
lituo20
  • 浏览: 2514 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

动态进度条(邮件发送)

    博客分类:
  • java
阅读更多

一直看博客,很少动手去写,今天就写一点,算是自己的笔记吧,同时也欢迎各位大神吐槽!

群发邮件,在web页面动态显示邮件总数,发送成功及失败的个数(动态进度条显示);

web页面:使用progressbar插件

jsp代码:

var progressbar = $("#progressbar");
var progressLabel = progressbar.find(".progress-label");
$(function() {
 progressbar = $("#progressbar");
 progressLabel = progressbar.find(".progress-label");
 progressbar.progressbar({
  value: false,
  change: function() {
  },
  complete: function() {
  }
 });
});

 

var d;
var current;
var total;
var failed = 0;

function sendEmail() {
 d = false;
 progressbar.progressbar( "value", 0);
 progressLabel.text("Sending...");
 var param = new Object();
 var url = "<%=basePath%>sendEmail/sendEmailManagement.action?temp="+Math.random();
 $("#Subutton").attr("disabled",false);

 $.get(url, $.param(param, true), function(data) {

  progress();
 });
}
 var current;
 var total;
 var failed = 0;
function progress() {
    $.get("<%=basePath%>sendEmail/checkSendingStatus.action?temp="+Math.random(), function(data1) {
    if(data1 == "finished"){
   progressbar.progressbar( "value", 100);
   progressLabel.text("Complete, with " + failed + " mails failed"); 
      d = true;
      return;
     }
     try{
      current = data1.split("-")[0];
   total = data1.split("-")[1];
   failed = data1.split("-")[2];
   var percent = 100 * parseFloat(current)/parseFloat(total);
   try{
    progressbar.progressbar( "value", percent);
    progressLabel.text("Sending .. " + current + "/" + total + " - " + failed + " failed");
   }
   catch(e){}
     }
     catch(e){
      progressbar.progressbar( "value", 100);
   progressLabel.text("Complete!");
     }
 });
 if(d == false){
  setTimeout( "progress()", 1000 );
 } 
}
</script>

 </head>

 <body>
  <center>
   <div class="container" style="width:90%;height: 200px;">
   
    <div class="operation">
     <div class="oButton"><input type="submit" class="button" value="Send" id="Subutton" onclick="javascript: sendEmail();" >
     </div>
    </div>
    <div id="progressbar">
    <div class="progress-label">send emails</div>
    </div>
   </div>
    </center>
 </body>
</html>

 

在这之前要记得导入progressbar相关的js文件,同时在jsp中要有

<div id="progressbar">
    <div class="progress-label">send emails</div>
    </div>
action代码:

为了进度条能够动态显示邮件个数,后台代码使用了线程:

public String sendEmailManagement() throws Exception {
  logger.info("sendEmaiManagement method");
  emailList = sendEmailService.getEmailInfo();
  int count = 0;
  for (int i = 0; i < emailList.size(); i++) {
   ++count;
  }
  sendEmail(emailList,count);
  return SUCCESS;
 }

 public void sendEmail(List<EmailBean> list,int emailCount) throws Exception{
  status = "0-0-0";
  instance = this;
  final List<EmailBean> eamilList = list;
  Thread task = new Thread(){
   public Object instance;
   public void run(){
    int count = 0;
    int failCount = 0;
    try {
     for(int i = 0; i < eamilList.size(); i++){
      EmailBean bean = emailList.get(i);
       invoke("emailSubscribeWithoutData", bean);
       this.sleep(1000);
     }

    } catch (InterruptedException e) {
     e.printStackTrace();
    }
    status = "finished";
   }
  };
  
  task.start();
  writeOutStr("success");
 }
 
 public boolean emailSubscribeWithoutData(EmailBean email) throws Exception {
  
  String toAddress = "";//邮箱地址
  String subject = "test";
  String content = "testdd";
  boolean sendStatus;
  sendStatus = emailSender(toAddress,subject,content);
       
  return sendStatus;
 }
 
 
 public String checkSendingStatus() throws Exception{
  System.out.println("checkSendStatus info --");
  writeOutStr(status);
  return null;
 }
 public void invoke(String method, EmailBean bean){
  int total=100;
  count++;
  Boolean result = false;
  try{
   Method m = instance.getClass().getMethod(method, EmailBean.class);
   result = (Boolean)m.invoke(instance, bean);
   if(!result){
    failCount++;
   }
  }
  catch(Exception e){
   failCount++;
   e.printStackTrace();
  }
  status = "" + count + "-" + total + "-" + failCount;
 }
 
 public boolean emailSender(String toAddress,String subject,String content){
  MailSenderInfo configBean = ConfigEmailReader.readEmailConfig();
  
  configBean.setToAddress(toAddress);    
  configBean.setSubject(subject);    
  configBean.setContent(content);    
         //这个类主要来发送邮件   
      SimpleMailSender sms = new SimpleMailSender();   
      return sms.sendHtmlMail(configBean);//发送html格式 
//  return true;
      
 }

  

以上只是部分测试代码,比较凌乱,邮件发送相关方法再次省略,欢迎各位大神批评指正。

 

 

 

 

  • 大小: 2.5 KB
1
1
分享到:
评论

相关推荐

    Android邮件发送器

    在Android平台上开发一个邮件发送器应用,主要涉及的是利用JavaMail API进行邮件处理。JavaMail API是一个开源的、跨平台的API,它提供了一系列接口和类来处理邮件发送和接收。下面将详细介绍如何在Android中实现...

    漂亮的winform邮件发送工具源码

    2. **带进度条**:为了提升用户体验,程序集成了进度条显示,用户在发送邮件过程中可以清晰地看到邮件发送的状态,这增加了操作的透明度和用户等待时的舒适感。 3. **发送日志查询**:工具还提供了发送日志查询功能...

    基于Python实现多进程的发送邮件.zip

    7. **进度显示**:为了提供用户体验,可以在主程序中添加一个简单的进度条或消息提示,让用户知道邮件发送的状态。 总的来说,这个课程设计涵盖了Python的多进程编程以及邮件发送的实践,这对于理解并发处理和实际...

    VC++通过QQ邮箱发送邮件例子

    此外,为了提高用户体验,可以添加进度条显示发送状态,或者在邮件发送完成后通知用户。 最后,提供的"Reco"可能是记录或日志文件,用于存储程序运行时的信息,如发送尝试、成功或失败的状态,这对于调试和优化邮件...

    delphi xe 邮件发送

    本文将详细探讨如何使用Delphi XE进行邮件发送功能的开发,覆盖Android、iOS以及Windows三个主要操作系统平台。 首先,Delphi XE支持多种邮件发送协议,包括SMTP(Simple Mail Transfer Protocol)和POP3(Post ...

    C#Winform实现邮件自动发送.rar

    在C#编程环境中,Winform(Windows Forms)是一种常用的用户界面框架,用于构建桌面应用程序。本教程将聚焦于如何在Winform应用中实现邮件的自动...同时,持续关注.NET Framework的更新,利用新特性优化邮件发送功能。

    PHP文件上传和邮件发送的类

    1. **初始化类**:实例化邮件发送类,并设置发件人、收件人、主题和邮件内容等基本信息。 2. **添加附件**:如果需要,可以通过类提供的方法添加文件作为邮件附件。 3. **设置内容类型**:为了发送HTML邮件,需要...

    邮件多文件发送功能

    C#提供了`System.Net.Mail`命名空间,其中的`MailMessage`和`SmtpClient`类是实现邮件发送的核心。`MailMessage`对象用于构建邮件内容,包括发件人、收件人、主题和正文,同时可以添加多个附件。`SmtpClient`对象则...

    邮件发送页面(类似于QQ界面)

    标题中的“邮件发送页面(类似于QQ界面)”指的是在Android应用开发中创建一个与QQ邮箱类似的用户界面,用于发送电子邮件。这个界面可能包括输入收件人、主题、正文的文本框,以及附加文件等常见功能。这样的设计...

    LumiSoftsmtp邮件发送实例winform

    你可能需要创建文本框让用户输入收件人、主题和邮件正文,按钮触发邮件发送操作,以及可能的进度条或状态指示器来显示发送状态。 6. **事件驱动编程**:在WinForm中,按钮点击事件或其他用户交互事件会被触发,这些...

    C#发送邮件

    在“C#邮件发送类.txt”这个文件中,可能包含了具体的C#代码示例,演示如何创建MailMessage对象、配置SmtpClient、定义IEmailNotice接口以及实现异步发送邮件的逻辑。代码通常会展示如何设置SMTP服务器的地址、端口...

    01编写发送邮件的代码.rar_c# 发送邮件_点名程序_邮件发送

    邮件发送功能的实现通常涉及到SMTP(Simple Mail Transfer Protocol)服务,下面将详细介绍这一知识点。 首先,C#中发送邮件的核心类是`System.Net.Mail.SmtpClient`和`System.Net.Mail.MailMessage`。`SmtpClient`...

    邮件发送插件Lightroom.zip

    《邮件发送插件Lightroom.zip:C#技术在Lightroom中的应用详解》 在数字摄影领域,Adobe Lightroom是一款不可或缺的图像管理和后期处理工具。它提供了丰富的编辑功能,让用户能够轻松管理并优化照片。然而,有时...

    Dellphi7 邮件发送工具

    在邮件发送工具中,可能包括输入框用于填写邮件信息,按钮用于触发操作,以及可能的进度条来显示发送状态。 6. **错误处理**:在实际应用中,错误处理是必不可少的。开发者可能已经为SMTP连接失败、邮件发送失败或...

    Winform向邮箱发送邮件

    总结起来,通过结合Winform和SMTP服务,我们可以构建一个简单的邮件发送应用。用户可以在界面上填写相关信息,点击发送按钮,后台通过SMTP协议将邮件发送到指定的邮箱地址。这个过程涉及了.NET框架的邮件服务组件,...

    winform邮件发送c#源码

    例如,当用户点击发送按钮时,显示一个等待动画或进度条,直到邮件发送完成。 此外,如果你有名为“email”的源码文件,这可能包含一个完整的邮件发送示例项目,包括UI设计和逻辑实现。通过研究这个源码,你可以更...

    Windows窗体邮件发送客户端

    为了提升用户体验,客户端可能包含状态指示器,如进度条或加载动画,显示邮件发送的状态。此外,可能还有日志记录功能,保存发送失败的邮件信息,便于后续分析。 8. **设计原则**: 应用程序的设计应遵循良好的...

    c#完善的邮件发送

    在C#编程中,发送邮件是一项常见的任务,尤其在企业级应用中,如通知、报告或客户服务通信。本文将详细讲解如何实现一个完善的邮件发送功能,包括验证...通过合理组合以上代码片段,可以构建出满足需求的邮件发送系统。

    MFC做的表格明细群发邮件小助手

    - **进度显示与取消操作**:在邮件发送过程中显示进度条,同时允许用户在发送过程中取消操作。 - **报告与统计**:生成发送报告,统计成功和失败的邮件数量,以及可能的原因。 总的来说,这个“表格明细群发邮件...

    C#发送邮件 支持群发 支持附件

    本教程将详细介绍如何利用C#编写一个功能完善的邮件发送程序,包括支持群发和添加附件,同时确保在发送过程中界面始终保持响应。...同时,为了提高用户体验,可以考虑添加邮件发送进度条或者发送状态的实时反馈。

Global site tag (gtag.js) - Google Analytics