用JavaMail发送带附件的Email

http://tech.ddvip.com   2006年11月24日    社区交流

本文详细介绍用JavaMail发送带附件的Email

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

  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") 来把图片和附件对应上。如何具体解析content的操作我就不赘述了,我现在给出如何把修改好的content发送出去的例子。

  //对于发送html类型的content,里边包括图片。

for(int i=0;i<_mailContent.getImgHash().size();i++)
{
  MimeBodyPart mbp1 = new MimeBodyPart();
  //得到图片的数据
  FileDataSource fds = new FileDataSource( (String)_mailContent.getImgHash().get("IMG"+i));
  //设置到MimeBodyPart中
  mbp1.setDataHandler(new DataHandler(fds));
  //设置图片附件和html的对应关系
  mbp1.setHeader("Content-ID","IMG"+i);
  mp.addBodyPart(mbp1);
}

  3.邮件的状态

责编:豆豆技术应用

正在加载评论...