01.public void sendMail(int id) {
02. //数据初始化
03. Transport transport; //发邮件时使用
04. String part = GetResource.getXMLValue("mail_port"); //端口
05. String mailhost = GetResource.getXMLValue("mail_server"); //服务器
06. String user = GetResource.getXMLValue("mail_user"); //用户名
07. String password = GetResource.getXMLValue("mail_password"); //密码
08. String from = GetResource.getXMLValue("mail_from"); //发件mail
09. String strname = GetResource.getXMLValue("mail_strname"); //在地址栏上显示的名字
10. String to = GetResource.getXMLValue("mail_to"); //收件人
11. String cc = ""; //抄送人
12. String bcc = ""; //密送人
13. String title = GetResource.getXMLValue("mail_title"); //标题
14. byte[] bytes = null;
15. try {
16. bytes = FileIO.readFile(GetResource.getXMLValue("mail_contentpath")); //正文
17. } catch (IOException ex) {
18. log.error("",ex);
19. }
20. String fromat = GetResource.getXMLValue("mail_fromat");
21. //获得下载需要的key
22. byte[] bkeydes=null;
23. try {
24. bkeydes=FileIO.readFile(GetResource.getXMLValue("附件地址"));
25. } catch (IOException ex) {
26. log.error("",ex);
27. }
28. try {
29. Properties props = System.getProperties(); //获得系统属性
30. props.put("mail.smtp.host", mailhost); //设置SMTP主机
31. props.put("mail.smtp.auth", "true"); //设置身份验证为真,若须身份验证则必须设为真
32. //获得邮件会话对象
33. Session session = null;
34. //需要验证
35. session = Session.getDefaultInstance(props,
36. new SmtpAuthenticator(user,
37. password));
38. //创建MIME邮件对象
39. MimeMessage mimeMsg = new MimeMessage(session);
40. //设置发信人
41. if (strname != null && !strname.equals("")) {
42. mimeMsg.setFrom(new InternetAddress(from, strname));
43. } else {
44. mimeMsg.setFrom(new InternetAddress(from));
45. }
46. //设置收信人
47. if (!to.equals("")) {
48. mimeMsg.setRecipients(Message.RecipientType.TO,
49. InternetAddress.parse(to));
50. }
51. //设置抄送人
52. if (!cc.equals("")) {
53. mimeMsg.setRecipients(Message.RecipientType.CC,
54. InternetAddress.parse(cc));
55. }
56. //设置暗送人
57. if (!bcc.equals("")) {
58. mimeMsg.setRecipients(Message.RecipientType.BCC,
59. InternetAddress.parse(bcc));
60. }
61. //设置邮件主题
62. sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
63.// mimeMsg.setSubject("=?GB2312?B?" + enc.encode(title.getBytes()) +
64.// "?=");
65. mimeMsg.setSubject(title, "GBK");
66. //设置邮件内容
67. //mimeMsg.setText(content, "gb2312");
68. //发送日期
69. mimeMsg.setSentDate(new Date());
70. /*******************附件 begin××××××××××××××××××××××××*/
71. BodyPart mbp = null; //正文
72. //MimeBodyPart mbp1 = null; //附件
73. mbp = new MimeBodyPart();
74. //设置邮件正文格式(html/text)
75. if (fromat.equals("0") || fromat.equals("")) {
76. //普通格式
77. mbp.setText(new String(bytes,"GBK"));
78. } else {
79. //网页格式
80. mbp.setDataHandler(new DataHandler(new String(bytes,"GBK"),
81. "text/html;charset=gb2312"));
82. }
83. //!!!!注意必须为new MimeMultipart("related"); 这样的实例化才能发送html正文显示图片的邮件 "related"
84. //new MimeMultipart(); 这样实例化则不能发送html正文显示图片的邮件 只可以发送其他的邮件
85. Multipart mp = new MimeMultipart("related");
86. if (mbp != null)
87. mp.addBodyPart(mbp); //正文
88. //附件key.des
89. BodyPart messageBodyPart = new MimeBodyPart();
90. ByteArrayDataSource fileds = new ByteArrayDataSource(bkeydes,"application/octet-stream");
91. messageBodyPart.setDataHandler(new DataHandler(fileds));
92. //解决附件中文问题
93. //mbp1.setFileName(fileds.getName(),"gb2312");
94. messageBodyPart.setFileName(MimeUtility.encodeWord("key.des", "GB2312", null));
95. mp.addBodyPart(messageBodyPart);
96. //附件 图标
97. messageBodyPart = new MimeBodyPart();
98. bytes=FileIO.readFile(GetResource.getXMLValue("img_logo"));
99. fileds = new ByteArrayDataSource(bytes,"application/octet-stream");
100. messageBodyPart.setDataHandler(new DataHandler(fileds));
101. //解决附件中文问题
102.// messageBodyPart.setFileName("fruitrsource_touming.jpg");
103.// messageBodyPart.setHeader("Content-ID", "fruitrsource_touming");
104. messageBodyPart.setFileName("1.jpg");
105. //!!!!注意这里是"<IMG1>" 带有尖括号 而在正文的html里面则是src="cid:IMG1"
106. messageBodyPart.setHeader("Content-ID", "<IMG1>");
107. mp.addBodyPart(messageBodyPart);
108. // 添加 Multipart到Message中
109. mimeMsg.setContent(mp);
110. mimeMsg.saveChanges();
111. transport = session.getTransport("smtp");
112. transport.connect(mailhost, Integer.parseInt(part), user, password);
113. //发送邮件
114. //transport.send(mimeMsg, mimeMsg.getAllRecipients());
115. //transport.send(mimeMsg);
116. transport.sendMessage(mimeMsg, mimeMsg.getAllRecipients());
117. //System.out.println("mail send!");
118. transport.close();
119. }
120. catch (Exception e) {
121. e.printStackTrace();
122. }
123. }
124.class SmtpAuthenticator extends Authenticator {
125. //SMTP身份验证
126. public SmtpAuthenticator(String username, String password) {
127. this.username = username;
128. this.password = password;
129. }
130. public PasswordAuthentication getPasswordAuthentication() {
131. return new PasswordAuthentication(this.username, this.password);
132. }
133. String username = null;
134. String password = null;
135. }