感謝網友 網絡時空 兄弟對個人提醒,我已經把郵件發送中加上了郵件嵌入圖片和增長附件方面的內容.謝謝
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
環境的差別都進行了抽象。
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.1
Spring
郵件的簡介
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
來引用這些文件。
回覆網絡時空兄弟 如下是個人代碼結構.