随笔-193  评论-715  文章-1  trackbacks-0
1,读入图片的方式:
发现网上讲的很多读取图片的方式都不对,按下面提供的这个方法来读取,保证成功。
 1    private byte[] getImageBytes(String file) {
 2        byte[] myData = null;
 3        InputStream input = getClass().getClassLoader().getResourceAsStream(
 4                file);
 5        try {
 6            ByteArrayOutputStream byteArray = new ByteArrayOutputStream();
 7            int ch = 0;
 8            while ((ch = input.read()) != -1{
 9                byteArray.write(ch);
10            }

11            // System.out.println(byteArray.size());
12            myData = byteArray.toByteArray();
13            // System.out.println(myData.length);
14        }
 catch (Exception e) {
15            e.printStackTrace();
16        }

17        return myData;
18    }

2,发送邮件的“机关”
 1        MimeMessage msg = new MimeMessage(mailSession);
 2        msg.setFrom(new InternetAddress(this.getSenderAddress()));
 3        msg.setSubject(this.getTitle());
 4        msg.setSentDate(new Date());
 5        Address[] adds = InternetAddress.parse(getToAddress());
 6        msg.addRecipients(javax.mail.Message.RecipientType.TO, adds);
 7        // 新建一个MimeMultipart对象用来存放BodyPart对象(事实上可以存放多个)
 8        MimeMultipart mm = new MimeMultipart("related");
 9        // 新建一个存放信件内容的BodyPart对象
10        BodyPart mdp = new MimeBodyPart();
11        // 给BodyPart对象设置内容和格式/编码方式
12        mdp.setContent(this.getContent(), "text/html;charset=utf-8");
13        // 这句很重要,千万不要忘了
14        mm.addBodyPart(mdp);
15
16        // ---------图片处理开始!!!!!!!!!!!!!!!!
17        mdp = new MimeBodyPart();
18        byte bbb[] = new byte[1024 * 10];
19        this.getClass().getClassLoader().getResourceAsStream("notice.jpg")
20                .read(bbb);
21        DataHandler dh = new DataHandler(new ByteArrayDataSource(this
22                .getImageBytes("notice.jpg"), "application/octet-stream"));
23        mdp.setDataHandler(dh);
24        // 加上这句将作为附件发送,否则将作为信件的文本内容
25        mdp.setFileName("1.jpg");
26        mdp.setHeader("content-id""<IMG1>");
27        // 将含有附件的BodyPart加入到MimeMultipart对象中
28        mm.addBodyPart(mdp);
29        // ---------图片处理结束!!!!!!!!!!!!!!!!
30
31        // 把mm作为消息对象的内容
32        msg.setContent(mm);
仔细看代码中的注释吧,相信大有帮助。

3,一个实际应用的完整代码
要求根据一个格式文件和模版,发一封漂亮的邮件,所以需要用到HTML格式来发送邮件。不多说了,看代码吧!


4,小技巧
我第一次发送后,发现读取图片的程序不对,在Outlook 2003中打开邮件,发现没有出现图片,搞半天也不知道是什么原因,后来我用FoxMail打开邮件,发现图片附件上打了个叉叉,才知道是附件中的图片读取不对,如果你有这样的问题,不妨换个Mail客户端试试。
posted on 2007-12-03 16:42 Robin's Programming World 阅读(1465) 评论(4)  编辑  收藏

评论:
# re: 用Java Mail发送带图片附件的要点 2007-12-03 17:58 | HiMaigc!
不错,很完整的说明。  回复  更多评论
  
# re: 用Java Mail发送带图片附件的要点 2007-12-04 09:11 | 千里冰封
不错,很详细,  回复  更多评论
  
# re: 用Java Mail发送带图片附件的要点 2008-04-01 22:14 | 草包书生
我正在为发送附件问题而烦恼,thanks for you  回复  更多评论
  
# re: 用Java Mail发送带图片附件的要点 2008-04-10 02:27 | Robin's Java World
@草包书生
不客气,如果能由于我的分享给大家带来方便,我感到很快乐。  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: