感谢网友 网络时空 兄弟对我的提醒,我已经把邮件发送中加上了邮件嵌入图片和增加附件方面的内容.谢谢
8.1.1任务调度简介
Spring包含了对定时调度服务的内置支持类。当前,Spring支持从JDK1.3开始内置的Timer类和Quartz Scheduler。二者都可以通过FactoryBean,分别指向TimerTrigger实例的引用进行配置。更进一步,有个对Quartz Scheduler和Timer都有效的工具类可以让你调用某个目标对象的方法(类似通常的MethodInvokingFactoryBean操作)。Spring 还包含有用于线程池调度的类,它针对Java 1.3,1.4,5和JEE环境的差异都进行了抽象。
8.1.2 Spring中使用Quartz
Quartz 是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群,插件,EJB作业预构建,JavaMail及其它,支持cron-like表达式等等。而在日常开发中我们也是优先使用Quartz进行计划任务的调度。
Scheduler代表一个Quartz的独立运行容器我们的任务需要由它来进行执行,请看下面的代码清单
代码清单1
<bean id="scheduler" class="org.springframework.scheduling.quartz.
 SchedulerFactoryBean">
    <property name="triggers">
        <list>
           <ref local="estimateLogTriggerQuartz" />
       </list>
    </property>
</bean>
<!—- 配置触发器调度的Bean -->
<bean id="estimateLog" class="org.springframework.scheduling.quartz.
MethodInvokingJobDetailFactoryBean">
<!-- 引用一个Bean -->
<property name="targetObject" ref="estimateLogTrigger" />
<!-- 指定目标Bean的方法 -->   
<property name="targetMethod" value="doSaveEstimateLog" />
</bean>
<!—- 配置触发器 -->
<bean id="estimateLogTriggerQuartz" class="org.springframework.scheduling.quartz. CronTriggerBean">
    <property name="jobDetail" ref="estimateLog" />
<!-- 每月最后一天23.55执行 -->
    <property name="cronExpression" value="0 55 23 L * ?" />
</bean>
代码清单1中配置了一个名为SchedulerFactoryBean、CronTriggerBean和MethodInvokingJobDetailFactoryBean的Bean这是Spring为了降低Quartz的使用难度,为创建Quartz的Scheduler、Trigger和JobDetail提供了便利的FactoryBean,SchedulerFactoryBean的triggers的属性为triggers[]类型,可以通过该属性注册多个Trigger,Bean estimateLogTriggerQuartz定义了jobDetail执行的时间和执行的方法。定义触发器执行的就是0 55 23 L * ? 这段表达式,这个表达式定义了在每月的最后一天L的23:55执行。
8.2 Spring的邮件支持
8.2.1Spring邮件的简介
Spring提供了一个发送电子邮件的高级抽象层,它向用户屏蔽了底层邮件系统的一些细节,同时代表客户端负责底层的资源处理。Spring在org.springframework.mail.javamail包下提供了对JavaMail邮件系统的支持,通过这些支持类,编写JavaMail邮件发送程序变得轻松易行。
1)发送普通邮件
       代码清单1
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
 
public class SendMail {
     public static void main(String args[]){
        JavaMailSenderImpl senderimpl = new JavaMailSenderImpl();
        Properties properties = new Properties();
        properties.setProperty("mail.smtp.auth", "true");
        senderimpl.setJavaMailProperties(properties);
        // 设定mail server
        senderimpl.setHost("smtpcom.263xmail.com");
         //设置用户名和密码
         senderimpl.setUsername("tony");
         senderimpl.setPassword("tony");
         //建立邮件消息
         SimpleMailMessage mailmessage = new SimpleMailMessage();
         //设置收件人
         String[] array = new String[]{"[email]myMail@163.com[/email]",
"[email]yourMail@263.com[/email]"};
         mailmessage.setTo(array);
         //设置寄件人
         mailmessage.setFrom("[email]myMail@163.com[/email]");
         //设置邮件主题
         mailmessage.setSubject("Test");
         //设置邮件内容
         mailmessage.setText("Test Send Mail");
         //发送邮件
         senderimpl.send(mailmessage);
         System.out.println("Send success.....");
    }
}
代码清单1中首先初始化了一个JavaMailSenderImpl实例,然后设置邮件服务器的端口地址,发送人的帐户和密码。SimpleMailMessage对象代表了邮件信息,包含一系列的属性。通过代码清单1我们可以很方便的发送一封邮件或者群发邮件。下面再介绍一下发送HTML格式的邮件。
    2)发送HTML邮件
    代码清单2
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
public class SendMail {
     public static void main(String args[]){
        JavaMailSenderImpl senderimpl = new JavaMailSenderImpl();
        Properties properties = new Properties();
        properties.setProperty("mail.smtp.auth", "true");
        senderimpl.setJavaMailProperties(properties);
        // 设定mail server
        senderimpl.setHost("smtpcom.263xmail.com");
         //设置用户名和密码
         senderimpl.setUsername("tony");
         senderimpl.setPassword("tony");
         //建立邮件消息
         MimeMessage mimeMessage = senderimpl.createMimeMessage();
         MimeMessageHelper messagehelper = new MimeMessageHelper(mimeMessage);
         try {
           //设置寄件人
           messagehelper.setFrom("[email]myMail@163.com[/email]");
           //设置收件人
           messagehelper.setTo("[email]yourMail@163.com[/email]");
           //设置邮件主题
           messagehelper.setSubject("Test HTML");
           //true 表示启动HTML格式的邮件
           messagehelper.setText("<html><head></head><body>Hello World ! </body></html>",true);
           } catch (MessagingException e) {e.printStackTrace();}
         //发送邮件
         senderimpl.send(mimeMessage);
         System.out.println("Send success.....");
    }
}
    根据代码清单2我们可看到只需要简单的设置
messagehelper.setText("<html><head></head><body>
Hello World ! </body></html>",true);第二个参数为true就可以发送HTML格式的邮件。
    3)发送含有附件和内嵌文件的邮件
    代码清单3
import java.io.IOException;
import java.util.Properties;
 
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
 
import org.springframework.core.io.ClassPathResource;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
public class SendMail {
    public static void main(String args[]) throws MessagingException,
           IOException {
       JavaMailSenderImpl senderimpl = new JavaMailSenderImpl();
       Properties properties = new Properties();
       properties.setProperty("mail.smtp.auth", "true");
       senderimpl.setJavaMailProperties(properties);
       // 设定mail server
       senderimpl.setHost("smtpcom.263xmail.com");
       // 设置用户名和密码
       senderimpl.setUsername("*****@crimsonlogictj.com");
       senderimpl.setPassword("*****");
       // 建立邮件消息
       MimeMessage mimeMessage = senderimpl.createMimeMessage();
 
MimeMessageHelper messagehelper =
new MimeMessageHelper(mimeMessage, true, "UTF-8");
       // 设置寄件人
       messagehelper.setFrom("*****@crimsonlogictj.com");
       // 设置收件人
       messagehelper.setTo("*****@crimsonlogictj.com");
       // 设置邮件主题
       messagehelper.setSubject("Test HTML");
       // true 表示启动html格式的邮件
       messagehelper.setText(
           "<html><head></head><body>" +
           "<img src=\"cid:img1\"></img>" +
//在HTML文本中嵌入了一个名为 cid:img1 的图片
           "<h1>Hello World</h1></body></html>",
           true);
       //定义图片
       ClassPathResource img = new ClassPathResource("01.jpg");
       //定义附件1
       ClassPathResource file2 = new ClassPathResource("02.jpg");
       //定义附件2
       ClassPathResource file3 = new ClassPathResource("03.jpg");
       //将图片加入
       messagehelper.addInline("img1", img.getFile());
       //将附件1加入
       messagehelper.addAttachment(file2.getFile().getName(),
file2.getFile());
       //将附件2加入
       messagehelper.addAttachment(file3.getFile().getName(),
                                   file3.getFile());
       // 发送邮件
       senderimpl.send(mimeMessage);
       System.out.println("Send success.....");
    }
}
从代码清单3中我们可以看到为一封邮件嵌入图片和加入附件都非常简单,但是在实际应用中不建议大家在邮件中嵌入图片文件或者声音文件,因为这样会增加邮件的大小,影响了邮件发送的效率,建议还是架设一个专用的服务器用于存放图片文件,在邮件中直接通过URL来引用这些文件。
回复网络时空兄弟 以下是我的代码结构.
我的其它Spring文章,也许会对您有帮助
Spring的任务调度和邮件发送
Spring应用的单元测试
Spring的数据库支持
Spring的MVC框架
Spring的IoC容器
Spring对AOP的支持
Spring2.5注释驱动与基于注释的MVC

本文转自 tony_action 51CTO博客,原文链接:http://blog.51cto.com/tonyaction/84008,如需转载请自行联系原作者

Spring的任务调度和邮件发送相关推荐

  1. ssh项目实战----Spring计时器任务 Spring整合JavaMail(邮件发送)

    一.常用数据频度维护 对于系统使用度较高的数据,客户在查看时希望这些数据最好先出现,此时需要为其添加排序规则.在进行排序时,使用次数成为排序的依据.因此需要设置一个字段用来描述某种数据的使用次数,也就 ...

  2. 【struts2+hibernate+spring项目实战】Spring计时器任务 Spring整合JavaMail(邮件发送)(ssh)

    一.常用数据频度维护 对于系统使用度较高的数据,客户在查看时希望这些数据最好先出现,此时需要为其添加排序规则.在进行排序时,使用次数成为排序的依据.因此需要设置一个字段用来描述某种数据的使用次数,也就 ...

  3. 纸上得来终觉浅,绝知此事要躬行——Spring boot任务调度

    前言:之前今日开讲项目的时候,用到了Quartz进行任务调度.后来做一个电商项目的时候,还用到了Quartz任务调度. 觉得挺简单的,a peace of cake.  忽略了总结,当时闭着眼睛都能捉 ...

  4. SpringBoot 实现邮件发送功能

    1.知识点疏通 邮件再项目中经常会被用到,比如邮件发送通知,比如通过邮件注册,认证,找回密码,系统报警通知,报表信息等. 接下来先了解一下邮件协议. 1.1 SMTP.POP.IMAP4协议 SMIP ...

  5. springboot(07)邮件发送(qq邮箱)

    可以使用Spring Boot提供的spring-boot-starter-mail模块来发送QQ邮件 首先登录QQ邮箱>>>登录成功后找到设置>>>然后找到邮箱设 ...

  6. 使用Spring实现邮件发送

    2019独角兽企业重金招聘Python工程师标准>>> 这两天写个小程序需要使用邮件发送的功能,在网上搜索了一帮子文章,感觉还是使用Spring的邮件发送功能比较方便,哈哈,懒人就这 ...

  7. 邮件发送 --- 纯Java、JavaWeb、Spring三种实现方式

    邮件发送学习笔记~ 一.邮件发送介绍 要在网络上实现邮件功能,必须要有专门的邮件服务器! 这些邮件服务器类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中! ...

  8. java邮件支持_使用Spring的JAVA Mail支持简化邮件发送功能

    闲来无事,翻看<Spring in Action>,发现Spring集成了对JAVA Mail的支持,有点小激动的看了一遍,嗯,话说真的简单了很多. Spring的邮件发送的核心是Mail ...

  9. spring各种邮件发送

    参考地址一 参考地址二 参考地址三 参考地址四 Spring邮件抽象层的主要包为org.springframework.mail.它包括了发送电子邮件的主要接口MailSender,和值对象Simpl ...

最新文章

  1. python文件操作(open()、write()、read()、readline()、readlines()、seek()、os)
  2. arduino读取matlab串口,Matlab Arduino实时串行通信,采样0.004 s
  3. android里canvas视频帧,移动端用canvas截取视频封面,如何不截取第一帧,而是截取其它的帧?...
  4. vnc 字体设置_Xterm字体大小的设置
  5. git提交后的代码在哪儿_git 分支合并策略
  6. 16 ValidationSummary
  7. Alex 的 Hadoop 菜鸟教程: 第19课 华丽的控制台 HUE 安装以及使用教程
  8. 如何调整eclipse字体大小
  9. 火狐使用谷歌搜索_Google拒绝使用Firefox
  10. 智能车制作——从元器件、机电系统、控制算法到完整的智能车设计|文末赠书
  11. 鼠标计算机英语怎么说,计算机鼠标器,computer mouse,音标,读音,翻译,英文例句,英语词典...
  12. oracle 12 去掉 cdb,Oracle 12c CDB 和PDB 数据库的启动与关闭 说明
  13. 跳楼机(同余类最短路)
  14. 个推技术 | ETL工程师必看!超实用的任务优化与断点执行方案
  15. 水文预报 求各个年份的纳什效率系数
  16. 阿里云服务器选购指南(图文教程详解)
  17. Pro Tools 2018.x版本安装/升级需知
  18. 波浪过程下载Loading动画
  19. 【转载】 S/4 HANA中的MATDOC和MATDOC_EXTRACT
  20. Vue组件的props

热门文章

  1. linux文件指令 例子,Linux 命令:文件目录操作与实例
  2. python matplotlib 饼图标签重叠_Python绘制饼图调节字体大小、防止标签重叠解决方法...
  3. php作业案例10,5月23日作业——实例演示查询构造器中的10个最常用的方法
  4. 图像传感器与信号处理——SFR算法/ISO 12233解读
  5. 【AI初识境】被Hinton,DeepMind和斯坦福嫌弃的池化,到底是什么?
  6. 【模型解读】“全连接”的卷积网络,有什么好?
  7. 如何步入深度学习刷榜第一重境界
  8. Lazada2022新开店入驻流程及费用
  9. 东南亚下半年做什么产品好?解读Lazadashopee服装类热销及需求品类
  10. 全球及中国冶金工业运行潜力与深度战略分析报告2022版