JAVAMAIL发送邮件正文是html格式并且显示图片还带有附件的邮件

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.    }

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值