`
suhuanzheng7784877
  • 浏览: 702582 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Ff8d036b-05a9-33b5-828a-2633bb68b7e6
读金庸故事,品程序人生
浏览量:47708
社区版块
存档分类
最新评论

JavaEE5学习笔记04-JavaMail使用总结---3

阅读更多

1.      接收邮件实例

/**

 * 简单的接收邮件例子

 *

 * @author liuyan

 *

 */

public class ReciveMail {

 

    private final static String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";

 

    private String account;

 

    private String password;

 

    private String pop3Host;

 

    private int pop3Port;

 

    private Store store;

 

 //省略setter、getter

 

    public Store getStore() throws MessagingException {

 

       if (this.store == null || !this.store.isConnected()) {

           Properties properties = new Properties();

 

           // gmail需要特殊处理SSL验证

           if (isGmail()) {

              properties.setProperty("mail.pop3.socketFactory.class",

                     SSL_FACTORY);

           }

 

           Session session = Session.getDefaultInstance(properties);

 

           // 使用pop3协议接收邮件

           URLName url = new URLName("pop3", getPop3Host(), getPop3Port(),

                  null, getAccount(), getPassword());

 

           // 获得邮件的存储对象

           Store store = session.getStore(url);

 

           // 连接上

           store.connect();

 

           this.store = store;

       }

 

       return store;

    }

 

 

  

    public ReciveMail() {

 

    }

 

    /**

     * 获得消息

     *

     * @throws MessagingException

     * @throws IOException

     */

    public void getMessages() throws MessagingException, IOException {

 

       // 获取INBOX文件夹,收件箱内

       Folder inbox = getStore().getFolder("INBOX");

 

       // 打开可读写的文件夹

       inbox.open(Folder.READ_WRITE);

 

       // 获得邮件实体对象数组

       Message[] messages = inbox.getMessages();

 

       // 遍历邮件

       for (int i = 0; i < messages.length; i++) {

 

           int j = i + 1;

 

           System.out.println("第【" + j + "】封邮件");

 

           // 邮件文本内容

           System.out

                  .println(getMailContent(messages[i], new StringBuffer(""))

                         .toString());

 

           // 获取邮件的附件

           getFiles(messages[i]);

 

           System.out

                  .println("===============================================");

       }

 

    }

 

    /**

     * 邮件的内容

     *

     * @param part

     * @param result

     * @return

     * @throws IOException

     * @throws MessagingException

     * @throws MessagingException

     * @throws IOException

     */

    private StringBuffer getMailContent(Part part, StringBuffer result)

           throws MessagingException, IOException {

       if (part.isMimeType("multipart/*")) {// 邮件是复杂类型的

           Multipart mp = (Multipart) part.getContent();

 

           // 邮件的整体部分body数量

           int sum = mp.getCount();

 

           // 第一部分是text/plain

           // 第二部分是text/html

           if (sum > 1)

              sum = 1;

 

           for (int i = 0; i < sum; i++) {

              BodyPart bp = mp.getBodyPart(i);

 

              // 递归

              getMailContent(bp, result);

           }

 

       } else if (part.isMimeType("text/*")) {// 邮件是纯文本类型的

           try {

              String str = (String) part.getContent();

 

              result.append(str);

 

           } catch (IOException e) {

 

              // gb2312需要异常处理

              InputStream is = part.getInputStream();

 

              byte[] b = new byte[1024];

             

              //因为gb2312的内容需要在异常中特殊处理一下,所以直接从字节数组中获得String内容

              is.read(b);

 

              String newStr = new String(b);

 

              result.append(newStr);

 

              // e.printStackTrace();

           } catch (MessagingException e) {

              // TODO Auto-generated catch block

              e.printStackTrace();

           }

       }

       return result;

 

    }

 

分享到:
评论

相关推荐

    JavaEE5学习笔记04-JavaMail使用总结

    ### JavaEE5学习笔记04-JavaMail使用总结 在JavaEE5的学习过程中,JavaMail是一个非常重要的组件,它提供了发送、接收电子邮件的功能,并且能够与各种不同的邮件服务器进行交互。下面将根据提供的内容,详细解析...

    JavaEE5学习笔记01-JTA和数据库事务

    ### JavaEE5学习笔记01-JTA和数据库事务:深入解析与应用 #### 一、JavaEE5概览与核心组件 JavaEE5是Java Enterprise Edition的第五个版本,标志着企业级Java应用的一个重要里程碑。它引入了一系列重要的新特性,...

    JavaEE5学习笔记07-Web层与EJB集成总结

    ### JavaEE5学习笔记07-Web层与EJB集成总结 #### 一、JavaEE5框架中的Web层与EJB集成概述 在JavaEE5(即Java Platform, Enterprise Edition 5)中,Web层与EJB(Enterprise JavaBeans)的集成是构建企业级应用的...

    javaee-api-8.0-javadoc.jar

    javaee-api-8.0-javadoc.jar,这是javaee1.8api的jar包,解压后可用javadoc2chm制作成chm帮助文档。

    JavaEE源代码 struts2-core-2.0.11

    JavaEE源代码 struts2-core-2.0.11JavaEE源代码 struts2-core-2.0.11JavaEE源代码 struts2-core-2.0.11JavaEE源代码 struts2-core-2.0.11JavaEE源代码 struts2-core-2.0.11JavaEE源代码 struts2-core-2.0.11JavaEE源...

    JavaEE源代码 struts2-spring-plugin-2.0.11

    JavaEE源代码 struts2-spring-plugin-2.0.11JavaEE源代码 struts2-spring-plugin-2.0.11JavaEE源代码 struts2-spring-plugin-2.0.11JavaEE源代码 struts2-spring-plugin-2.0.11JavaEE源代码 struts2-spring-plugin-...

    javaee-api-6.0-5

    java javaee-api-6.0-5

    JavaEE源代码 jaxen-1.1-beta-7

    JavaEE源代码 jaxen-1.1-beta-7JavaEE源代码 jaxen-1.1-beta-7JavaEE源代码 jaxen-1.1-beta-7JavaEE源代码 jaxen-1.1-beta-7JavaEE源代码 jaxen-1.1-beta-7JavaEE源代码 jaxen-1.1-beta-7JavaEE源代码 jaxen-1.1-...

    JavaEE源代码 commons-logging-1.0.4

    JavaEE源代码 commons-logging-1.0.4JavaEE源代码 commons-logging-1.0.4JavaEE源代码 commons-logging-1.0.4JavaEE源代码 commons-logging-1.0.4JavaEE源代码 commons-logging-1.0.4JavaEE源代码 commons-logging-...

    JavaEE源代码 commons-collections-2.1.1

    JavaEE源代码 commons-collections-2.1.1JavaEE源代码 commons-collections-2.1.1JavaEE源代码 commons-collections-2.1.1JavaEE源代码 commons-collections-2.1.1JavaEE源代码 commons-collections-2.1.1JavaEE源...

    javaEE健康管理系统SSH-oracle(源码+数据库sql+lun文+视频齐全).zip

    javaEE健康管理系统SSH-oracle(源码+数据库sql+lun文+视频齐全)javaEE健康管理系统SSH-oracle(源码+数据库sql+lun文+视频齐全)javaEE健康管理系统SSH-oracle(源码+数据库sql+lun文+视频齐全)javaEE健康管理系统SSH-...

    JavaEE源代码 spring-hibernate3

    JavaEE源代码 spring-hibernate3JavaEE源代码 spring-hibernate3JavaEE源代码 spring-hibernate3JavaEE源代码 spring-hibernate3JavaEE源代码 spring-hibernate3JavaEE源代码 spring-hibernate3JavaEE源代码 spring-...

    javaee5-doc-api

    在这个“javaee5-doc-api”压缩包中,包含的是Java EE 5的官方API文档,对于开发者来说是一份非常重要的参考资料。 **1. Servlet API** Servlet是Java EE中处理HTTP请求的核心组件。在Java EE 5中,Servlet API升级...

Global site tag (gtag.js) - Google Analytics