用JavaMail发送带附件的Email

2016-02-19 15:59 12 1 收藏

生活已是百般艰难,为何不努力一点。下面图老师就给大家分享用JavaMail发送带附件的Email,希望可以让热爱学习的朋友们体会到设计的小小的乐趣。

【 tulaoshi.com - 编程语言 】


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

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  1.发送带附件的邮件

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  我们平时发送的邮件主要可以分解成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语言,而且包含图片信息的邮件。

进入讨论组讨论。 2.发送content中包含html页面的邮件

  

来源:http://www.tulaoshi.com/n/20160219/1610821.html

延伸阅读
标签: Java JAVA基础
  在jsp中发送email 一、我们可以通过任何支持sun规范中的sun.net.smtp包的JSP引擎(如JSWDK)发送mail。 (警告:使用内置的internal Sun规范包,这将影响到你的jsp程序的可移植性。) 以下scriptlet利用SmtpClient类在jsp文件中发送email。 二、 JavaMail是官方的 Java mail API,可参考 http://java.sun.com/products/javamail/...
发送邮件的主程序 import java.util.Properties; import common.util.Email_Autherticatorbean; import javax.mail.Authenticator; import javax.mail.internet.InternetAddress; import org.apache.commons.lang.StringUtils; import javax.mail.internet.MimeBodyPart; import javax.mail.Multipa...
import Java.io.*; import java.util.*; import javax.mail.*; import javax.mail.internet.*; /**  * pTitle: 简易MailBean/p  * pDescription: 提供简便的Mail发送功能(/p  * pCopyright: Copyright (c) 2003/p  * @version 1.0  */ class ExtendString { &nb...
标签: Web开发
刚刚看到一篇关于在.NET 中发送Email的文章《从asp.net页面发送电子邮件》看到使用的还是System.Web.Mail命名空间下的类。我们都知道,在.NET 1.1下大部分都是使用这个命名空间下的类来发送邮件的,使用SmtpMail的Send静态方法可以很简单的发送Email,但由于这个类调用的是Windows2000版本以上的操作系统的CDO组件来发送邮件,不管是什么错...
标签: 电脑入门
发送超大邮件对于Windows系统用户来说,是件很容易的事,不过对于MAC用户来说,却不是这样。新发布的 Mac OS 10.10 Yosemite 系统终于解决了这个大难题,现在就让图老师小编给大家介绍一下在Mac OS 10.10 Yosemite 系统中如何发送超大邮件吧。 Mac 发送超大附件的操作方法: 1、当然,要想使用最新的 MailDrop 功能,需要你升级为最新的...

经验教程

119

收藏

47
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部