由于对账结果异常数据一般不会很多,因此直接写入邮件内容,而不是添加附件,邮件内容形式为表格
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 }
原文:http://www.cnblogs.com/qingxinshujuan/p/4968196.html