當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring的任务调度和邮件发送
生活随笔
收集整理的這篇文章主要介紹了
Spring的任务调度和邮件发送
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
感謝網(wǎng)友?網(wǎng)絡時空?兄弟對我的提醒,我已經(jīng)把郵件發(fā)送中加上了郵件嵌入圖片和增加附件方面的內容.謝謝 8.1.1任務調度簡介 Spring包含了對定時調度服務的內置支持類。當前,Spring支持從JDK1.3開始內置的Timer類和Quartz Scheduler。二者都可以通過FactoryBean,分別指向Timer或Trigger實例的引用進行配置。更進一步,有個對Quartz Scheduler和Timer都有效的工具類可以讓你調用某個目標對象的方法(類似通常的MethodInvokingFactoryBean操作)。Spring?還包含有用于線程池調度的類,它針對Java 1.3,1.4,5和JEE環(huán)境的差異都進行了抽象。 8.1.2?Spring中使用Quartz Quartz?是一個開源的作業(yè)調度框架,它完全由Java寫成,并設計用于J2SE和J2EE應用中。它提供了巨大的靈活性而不犧牲簡單性。你能夠用它來為執(zhí)行一個作業(yè)而創(chuàng)建簡單的或復雜的調度。它有很多特征,如:數(shù)據(jù)庫支持,集群,插件,EJB作業(yè)預構建,JavaMail及其它,支持cron-like表達式等等。而在日常開發(fā)中我們也是優(yōu)先使用Quartz進行計劃任務的調度。 Scheduler代表一個Quartz的獨立運行容器我們的任務需要由它來進行執(zhí)行,請看下面的代碼清單 代碼清單1 <bean?id="scheduler"?class="org.springframework.scheduling.quartz. ?SchedulerFactoryBean"> ????<property?name="triggers"> ????????<list> ???????????<ref?local="estimateLogTriggerQuartz"?/> ???????</list> ????</property> </bean> <!—-?配置觸發(fā)器調度的Bean --> <bean?id="estimateLog"?class="org.springframework.scheduling.quartz. MethodInvokingJobDetailFactoryBean"> <!--?引用一個Bean --> <property?name="targetObject"?ref="estimateLogTrigger"?/> <!--?指定目標Bean的方法?-->??? <property?name="targetMethod"?value="doSaveEstimateLog"?/> </bean> <!—-?配置觸發(fā)器?--> <bean?id="estimateLogTriggerQuartz"?class="org.springframework.scheduling.quartz. CronTriggerBean"> ????<property?name="jobDetail"?ref="estimateLog"?/> <!--?每月最后一天23.55執(zhí)行?--> ????<property?name="cronExpression"?value="0 55?23 L?* ?"?/> </bean> 代碼清單1中配置了一個名為SchedulerFactoryBean、CronTriggerBean和MethodInvokingJobDetailFactoryBean的Bean這是Spring為了降低Quartz的使用難度,為創(chuàng)建Quartz的Scheduler、Trigger和JobDetail提供了便利的FactoryBean,SchedulerFactoryBean的triggers的屬性為triggers[]類型,可以通過該屬性注冊多個Trigger,Bean?estimateLogTriggerQuartz定義了jobDetail執(zhí)行的時間和執(zhí)行的方法。定義觸發(fā)器執(zhí)行的就是0 55?23 L?* ??這段表達式,這個表達式定義了在每月的最后一天L的23:55執(zhí)行。 8.2 Spring的郵件支持 8.2.1Spring郵件的簡介 Spring提供了一個發(fā)送電子郵件的高級抽象層,它向用戶屏蔽了底層郵件系統(tǒng)的一些細節(jié),同時代表客戶端負責底層的資源處理。Spring在org.springframework.mail.javamail包下提供了對JavaMail郵件系統(tǒng)的支持,通過這些支持類,編寫JavaMail郵件發(fā)送程序變得輕松易行。 1)發(fā)送普通郵件 ???????代碼清單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"); ?????????//發(fā)送郵件 ?????????senderimpl.send(mailmessage); ?????????System.out.println("Send success....."); ????} } 代碼清單1中首先初始化了一個JavaMailSenderImpl實例,然后設置郵件服務器的端口地址,發(fā)送人的帳戶和密碼。SimpleMailMessage對象代表了郵件信息,包含一系列的屬性。通過代碼清單1我們可以很方便的發(fā)送一封郵件或者群發(fā)郵件。下面再介紹一下發(fā)送HTML格式的郵件。 ????2)發(fā)送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();} ?????????//發(fā)送郵件 ?????????senderimpl.send(mimeMessage); ?????????System.out.println("Send success....."); ????} } ????根據(jù)代碼清單2我們可看到只需要簡單的設置 messagehelper.setText("<html><head></head><body> Hello World ! </body></html>",true);第二個參數(shù)為true就可以發(fā)送HTML格式的郵件。 ????3)發(fā)送含有附件和內嵌文件的郵件 ????代碼清單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()); ???????//?發(fā)送郵件 ???????senderimpl.send(mimeMessage); ???????System.out.println("Send success....."); ????} } 從代碼清單3中我們可以看到為一封郵件嵌入圖片和加入附件都非常簡單,但是在實際應用中不建議大家在郵件中嵌入圖片文件或者聲音文件,因為這樣會增加郵件的大小,影響了郵件發(fā)送的效率,建議還是架設一個專用的服務器用于存放圖片文件,在郵件中直接通過URL來引用這些文件。 回復網(wǎng)絡時空兄弟 以下是我的代碼結構. 我的其它Spring文章,也許會對您有幫助 Spring的任務調度和郵件發(fā)送 Spring應用的單元測試 Spring的數(shù)據(jù)庫支持 Spring的MVC框架 Spring的IoC容器 Spring對AOP的支持 Spring2.5注釋驅動與基于注釋的MVC
本文轉自 tony_action 51CTO博客,原文鏈接:http://blog.51cto.com/tonyaction/84008,如需轉載請自行聯(lián)系原作者
本文轉自 tony_action 51CTO博客,原文鏈接:http://blog.51cto.com/tonyaction/84008,如需轉載請自行聯(lián)系原作者
總結
以上是生活随笔為你收集整理的Spring的任务调度和邮件发送的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HACMP 认证学习系列,第 2 部分:
- 下一篇: 疯狂ios之cocos2d中的声音