快速业务通道

用JavaMail发送带附件的Email - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23

用JavaMail发送带附件的Email

时间:2010-12-13

随着网络应用的不断推广,电子邮件越来越多的被大家使用。虽然我们往往将电子邮件与 Foxmail、Outlook 这样的电子邮件客户端联系起来,但是往往我们也需要自己编程实现发送接收邮件,例如在一个网站注册用户后网站发出的回执mail,或者在网络购物的时候,在完成订单后的几分钟之内发送确认电子邮件。对于这样的需求,我们不能通过已有的邮件客户端而需要自己编写邮件发送或者处理程序。在这里向大家讲解一下如何利用JavaMail来实现邮件的收发。

注意:本文只打算讨论JavaMail收发带附件邮件的一些技巧,所以只是给出部分代码。

1.发送带附件的邮件

我们平时发送的邮件主要可以分解成2大部分,一个是发信人,接信人,主题等邮件标头,另外一部分是邮件内容,它包括了邮件的附件。我们在发送普通邮件的时候content设置的类型是"text/html",带上附件后,我们需要把content的类型设置成Multipart,这时content包括了附件和"text/html"类型的正文。下面的这个告诉大家如何把附件放置到邮件中。

private Multipart getMultipart() throws MessagingException,UnsupportedEncodingException {   MimeMultipart mp = new MimeMultipart();   try   {    //设置content里的内容    MimeBodyPart contentMbp = new MimeBodyPart();    //请指定字符集,否则会是乱码    contentMbp.setContent(_mailContent.getContent(), "text/html; charset=GB2312");    mp.addBodyPart(contentMbp); //添加附件    for (int i=0;i<_mailAttachment.getAttachPath().size();i++)    {     MimeBodyPart mbp = new MimeBodyPart();     FileDataSource fds = new FileDataSource((String) _mailAttachment.getAttachPath().get(i));     mbp.setDataHandler(new DataHandler(fds));     mbp.setFileName(MimeUtility.encodeWord(fds.getName(), "GB2312",null));     mp.addBodyPart(mbp);    }   }   catch(MessagingException ie)   {    System.out.println("Set Content Message error..."+ie.getMessage());    throw ie;   }   catch(UnsupportedEncodingException ie)   {    System.out.println("Encode the fileName error..."+ie.getMessage());    throw ie;   }   return mp; }

放置附件的注意事项如下:

在发mail时需要注意字符集的问题。不但content里要设置,而且文件名也需要设置。如果我们去掉mbp.setFileName(MimeUtility.encodeWord(fds.getName(),"GB2312",null));这句话,那么你选中的附件还是会带到邮件里,但是在附件里看不到。我们可以通过查看邮件大小知道。我们利用这个特点来实现发送content中写的是html语言,而且包含图片信息的邮件。

用JavaMail发送带附件的Email(2)

时间:2010-12-13

2.发送content中包含html页面的邮件

大家都知道html语言可以带上图片链接(<img src=”c:/test.jpg”></img>),那么我们在发送邮件的时候就需要对这些链接的图片做特殊处理。否则在对方接收到邮件的时候会看不到图片。我们特殊处理的方法就是把它们当成附件发送,但不显示在附件里。要做到这些就首先需要对输入的content进行解析,找到所带图片的路径。然后把content中<img src=”c:/test.jpg”></img>这段代码变成<img src=” cid:IMG”></img>。我们在发送附件的时候用mbp1.setHeader("Content-ID","IMG") 来把图片和附件对应上。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号