首页 > 编程语言 > 详细

使用javax.mail发送邮件

时间:2015-11-16 10:53:08      阅读:259      评论:0      收藏:0      [点我收藏+]
  公司项目需求在对账结束后,每日凌晨4点发送对账结果给负责人查看

  由于对账结果异常数据一般不会很多,因此直接写入邮件内容,而不是添加附件,邮件内容形式为表格

技术分享

  1 /***
  2      * 从数据库中查询当日对账结果,生成邮件内容
  3      */
  4     private void getCheckResult() {
  5         // 查询对账所需要的字段
  6         String sql = "select * from table";
  7         String[][] result = db.executeQuery(sql, null);
  8 
  9         StringBuilder sb = new StringBuilder();
 10 
 11         // 生成第对账表格
 12         sb.append(
 13                 "<html><head><style type=‘text/css‘>table,tr,td{border: solid 1px;border-collapse: collapse;}</style></head>"
 14                         + "<body>" + "<table>"
 15                         + "<tr><td>流水号</td><td>保单号</td><td>产品名称</td><td>投保人</td><td>实收保费</td><td>核心保费</td><td>投保日期</td><td>支付日期</td><td>状态</td></tr>");
 16         for (int i = 0; i < result.length; i++) {
 17             sb.append("<tr>");
 18             for (int j = 0; j < result[i].length; j++) {
 19                 if (j < result[i].length - 1) {
 20                     if (result[i][j] != null && !("".equals(result[i][j]))) {
 21                         sb.append("<td>" + result[i][j] + "</td>");
 22                     } else {
 23                         sb.append("<td>null</td>");
 24                     }
 25                 } else {
 26                     if ("01".equals(result[i][j])) {
 27                         sb.append("<td>已扣款未承保-安排退款</td>");
 28                     } else if ("02".equals(result[i][j])) {
 29                         sb.append("<td>多次扣款未承保-安排退款</td>");
 30                     } else if ("03".equals(result[i][j])) {
 31                         sb.append("<td>未扣款已承保-联系客户扣款或线下退保</td>");
 32                     } else if ("04".equals(result[i][j])) {
 33                         sb.append("<td>核心数据错误-数据维护</td>");
 34                     }
 35                 }
 36             }
 37             sb.append("</tr>");
 38         }
 39         sb.append("</table></body></html>");
 40         if (sb.toString() != null && !("".equals(sb.toString()))) {
 41             content = sb.toString();
 42         } else {
 43             content = "对账数据无差异";
 44         }
 45 
 46     }
 47 
 48     private boolean sendEmail() {
 49         String host;// 发送方邮箱所在的smtp主机
 50         final String sender;// 发送方邮箱
 51         final String password;// 密码
 52         final String receiver;// 接收方
 53         ResourceBundle rb = ResourceBundle.getBundle("checkAccountEmail");
 54 
 55         host = rb.getString("mail_host");
 56         sender = rb.getString("mail_sender");
 57         password = rb.getString("mail_password");
 58         receiver = rb.getString("mail_receivers");
 59         System.out.println(sender);
 60         System.out.println(password);
 61 
 62         String[] receivers = receiver.split("&&");
 63         for (int i = 0; i < receivers.length; i++) {
 64             System.out.println(receivers[i]);
 65         }
 66 
 67         final Properties props = new Properties();
 68         // 表示SMTP发送邮件,需要进行身份验证
 69         props.put("mail.smtp.auth", "true");
 70         props.put("mail.smtp.host", host);
 71         // 发件人的账号
 72         props.put("mail.user", sender);
 73         // 访问SMTP服务时需要提供的密码
 74         props.put("mail.password", password);
 75 
 76         // 构建授权信息,用于进行SMTP进行身份验证
 77         Authenticator authenticator = new Authenticator() {
 78             protected PasswordAuthentication getPasswordAuthentication() {
 79                 // 用户名、密码
 80                 String userName = props.getProperty(sender);
 81                 String passWord = props.getProperty(password);
 82                 return new PasswordAuthentication(userName, passWord);
 83             }
 84         };
 85 
 86         Session session = Session.getInstance(props, authenticator);
 87         MimeMessage message = new MimeMessage(session);
 88 
 89         InternetAddress form;
 90         try {
 91             // 设置发件人
 92             form = new InternetAddress(sender);
 93             message.setFrom(form);
 94             // 设置收件人(群发)
 95             List list = new ArrayList<>();
 96             for (int i = 0; i < receivers.length; i++) {
 97                 list.add(new InternetAddress(receivers[i]));
 98             }
 99             InternetAddress[] ia = (InternetAddress[]) list.toArray(new InternetAddress[list.size()]);
100             message.setRecipients(RecipientType.TO, ia);
101             // 设置邮件标题
102             message.setSubject(queryDate + "日对账文件明细");
103             // 设置邮件的内容体
104             message.setContent(content, "text/html;charset=UTF-8");
105             // 发送邮件
106             Transport transport = session.getTransport("smtp");
107             session.setDebug(true);
108             System.out.println("******正在连接" + host);
109             transport.connect(host, sender, password);
110             transport.sendMessage(message, message.getAllRecipients());
111             System.out.println("******邮件发送成功");
112         } catch (AddressException e) {
113             // TODO Auto-generated catch block
114             e.printStackTrace();
115         } catch (MessagingException e) {
116             // TODO Auto-generated catch block
117             e.printStackTrace();
118         }
119 
120         return false;
121     }

 

 

使用javax.mail发送邮件

原文:http://www.cnblogs.com/qingxinshujuan/p/4968196.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!