1 import java.util.List; 2 import java.util.Properties; 3 4 import javax.annotation.Resource; 5 import javax.mail.Authenticator; 6 import javax.mail.Message.RecipientType; 7 import javax.mail.PasswordAuthentication; 8 import javax.mail.Session; 9 import javax.mail.Transport; 10 import javax.mail.internet.InternetAddress; 11 import javax.mail.internet.MimeMessage; 12 13 import cn.itcast.bos.dao.IWorkbillDao; 14 import cn.itcast.bos.domain.Workbill; 15 16 /** 17 * 发送邮件 18 * 19 */ 20 public class MailJob { 21 @Resource 22 private IWorkbillDao workbillDao; 23 24 private String username; 25 private String password; 26 private String smtpServer; 27 28 public String getUsername() { 29 return username; 30 } 31 32 public void setUsername(String username) { 33 this.username = username; 34 } 35 36 public String getPassword() { 37 return password; 38 } 39 40 public void setPassword(String password) { 41 this.password = password; 42 } 43 44 public void execute() { 45 System.out.println("要发邮件了。。。"); 46 try { 47 //查询工单类型为新单的所有工单 48 List<Workbill> list = workbillDao.findNewWorkbills(); 49 if(null != list && list.size() > 0){ 50 final Properties mailProps = new Properties(); 51 mailProps.put("mail.smtp.host", this.getSmtpServer()); 52 mailProps.put("mail.smtp.auth", "true"); 53 mailProps.put("mail.username", this.getUsername()); 54 mailProps.put("mail.password", this.getPassword()); 55 56 // 构建授权信息,用于进行SMTP进行身份验证 57 Authenticator authenticator = new Authenticator() { 58 protected PasswordAuthentication getPasswordAuthentication() { 59 // 用户名、密码 60 String userName = mailProps.getProperty("mail.username"); 61 String password = mailProps.getProperty("mail.password"); 62 return new PasswordAuthentication(userName, password); 63 } 64 }; 65 // 使用环境属性和授权信息,创建邮件会话 66 Session mailSession = Session.getInstance(mailProps, authenticator); 67 for(Workbill workbill : list){ 68 // 创建邮件消息 69 MimeMessage message = new MimeMessage(mailSession); 70 // 设置发件人 71 InternetAddress from = new InternetAddress(mailProps.getProperty("mail.username")); 72 message.setFrom(from); 73 // 设置收件人 74 InternetAddress to = new InternetAddress("test@itcast.cn"); 75 message.setRecipient(RecipientType.TO, to); 76 // 设置邮件标题 77 message.setSubject("系统邮件:新单通知"); 78 // 设置邮件的内容体 79 message.setContent(workbill.toString(), "text/html;charset=UTF-8"); 80 // 发送邮件 81 Transport.send(message); 82 } 83 } 84 } catch (Exception ex) { 85 ex.printStackTrace(); 86 } 87 } 88 89 public String getSmtpServer() { 90 return smtpServer; 91 } 92 93 public void setSmtpServer(String smtpServer) { 94 this.smtpServer = smtpServer; 95 } 96 }