聲明:本人的框架是SSM
1、寫一個email工具類
public class EmailUtil {
public void sendMessage(String[] receivers) throws Exception{
Properties prop = new Properties();
// 開啓debug調試,以便在控制檯查看
prop.setProperty("mail.debug", "true");
// 設置郵件服務器主機名
prop.setProperty("mail.host", "smtp.163.com");
// 發送服務器需要身份驗證
prop.setProperty("mail.smtp.auth", "true");
// 發送郵件協議名稱
prop.setProperty("mail.transport.protocol", "smtp");
// 開啓SSL加密,否則會失敗
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
prop.put("mail.smtp.ssl.enable", "true");
prop.put("mail.smtp.ssl.socketFactory", sf);
// 創建session
Session session = Session.getInstance(prop);
// 通過session得到transport對象
Transport ts = session.getTransport();
// 連接郵件服務器:郵箱類型,帳號,授權碼代替密碼(更安全)
ts.connect("smtp.163.com","[email protected]", "xxxxx授權碼");
// 創建郵件
// 創建郵件對象
MimeMessage message = new MimeMessage(session);
// 指明郵件的發件人
message.setFrom(new InternetAddress("[email protected]"));
// 指明郵件的收件人,現在發件人和收件人是一樣的,那就是自己給自己發
for (String receiver : receivers) {
message.setRecipient(Message.RecipientType.TO, new InternetAddress(receiver));
// 郵件的標題
message.setSubject("郵件測試");
// 郵件的文本內容
message.setContent(""
+ "<h1><font color=red>"
+ "京東邀請你參加京東9月20日,京東商品節!更多優惠商品等你來買,買的越多優惠越多!趕快行動吧!"
+ "</font></h1>"
+ "", "text/html;charset=UTF-8");
// 發送郵件
}
ts.sendMessage(message, message.getAllRecipients());
ts.close();
}
}
2、定義一個job類,主要是
public class SendEmail {
//注入service
@Resource
private UserService userService;
public void sendEmail(){
//查詢郵箱
List<String> receivers=userService.findEmail();
//定一個數組,將查詢到的郵箱一一放入數組中
String[] receiverArray=new String[receivers.size()];
for(int i=0;i<receivers.size();i++){
receiverArray[i]=receivers.get(i);
}
//調用EmailUtile方法,發送郵件
EmailUtil emailUtil=new EmailUtil();
try {
emailUtil.sendMessage(receiverArray);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
applicationContent.xml中
//id隨意起一個名字,主要是下面ref要與這個名字相同 class="job類所在的位置" method="job類中的方法名"
<bean id="jobA" class="com.zhiyou.job.SendEmail"></bean>
<task:scheduled-tasks>
<task:scheduled ref="jobA" method="sendEmail" cron="1 12 12 12 12 ?"/>
</task:scheduled-tasks>