JavaMail入门教程之接收邮件(4)

 更新时间:2016年12月22日 15:47:09   作者:汪先森  
这篇文章主要为大家详细介绍了JavaMail入门教程之接收邮件的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

上一篇JavaMail入门第三篇 发送邮件中,我们学会了如何用JavaMail API提供的Transport类发送邮件,同样,JavaMail API中也提供了一些专门的类来对邮件的接收进行相关的操作,在介绍这些类之前,我们先来了解下邮件接收API的体系结构,JavaMail API中定义了一个java.mail.Store类,它用于执行邮件的接收任务,我们在程序中调用这个类中的方法可以获取邮箱中的各个邮件夹的信息。JavaMail使用Folder对象表示邮件夹,通过Folder对象的方法可以获取邮件夹中的所有邮件信息,而我们知道邮件的信息可以使用Message对象来表示,Message类中就包含了操作邮件的各种方法了,例如获取邮件的发送者,主题,正文内容,发送时间等,它们工作关系如下:

1、从Session对象中获得实现了某种邮件发送协议的Store对象;

2、登录邮箱,连接上POP3或者IMAP4服务器;

3、调用Store的getFolder方法,获取邮箱中的某个邮件夹的Folder对象;

4、调用Folder对象中的getMessage或getMessages方法,获取邮件夹中的某一封邮件或者是所有邮件,每一封的邮件以一个Message对象返回。

接下来我们用以上类来接收邮件

import java.util.Properties;

import javax.mail.Address;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Store;

class MailReceives {
 public static void main(String[] args) throws Exception {
  // 定义连接POP3服务器的属性信息
  String pop3Server = "pop.qq.com";
  String protocol = "pop3";
  String username = "123456@qq.com";
  String password = "****************"; // QQ邮箱的SMTP的授权码,什么是授权码,它又是如何设置?

  Properties props = new Properties();
  props.setProperty("mail.transport.protocol", protocol); // 使用的协议(JavaMail规范要求)
  props.setProperty("mail.smtp.host", pop3Server); // 发件人的邮箱的 SMTP服务器地址

  // 获取连接
  Session session = Session.getDefaultInstance(props);
  session.setDebug(false);

  // 获取Store对象
  Store store = session.getStore(protocol);
  store.connect(pop3Server, username, password); // POP3服务器的登陆认证

  // 通过POP3协议获得Store对象调用这个方法时,邮件夹名称只能指定为"INBOX"
  Folder folder = store.getFolder("INBOX");// 获得用户的邮件帐户
  folder.open(Folder.READ_WRITE); // 设置对邮件帐户的访问权限

  Message[] messages = folder.getMessages();// 得到邮箱帐户中的所有邮件

  for (Message message : messages) {
   String subject = message.getSubject();// 获得邮件主题
   Address from = (Address) message.getFrom()[0];// 获得发送者地址
   System.out.println("邮件的主题为: " + subject + "\t发件人地址为: " + from);
   System.out.println("邮件的内容为:");
   message.writeTo(System.out);// 输出邮件内容到控制台
  }

  folder.close(false);// 关闭邮件夹对象
  store.close(); // 关闭连接对象
 }
}

控制台输出结果:

可以看到控制台输出的是邮件的原始内容,还未被解析,所以需要经过解析才能阅读,下一篇JavaMail入门第五篇 解析邮件将讲解如何解析邮件。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 解读@ResponseBody与@RequestBody注解的用法

    解读@ResponseBody与@RequestBody注解的用法

    这篇文章主要介绍了Spring MVC中的@ResponseBody和@RequestBody注解的用法,@ResponseBody注解用于将Controller方法的返回对象转换为指定格式(如JSON)并通过Response响应给客户端,@RequestBody注解用于读取HTTP请求的内容
    2024-11-11
  • 简单实现Java版学生管理系统

    简单实现Java版学生管理系统

    这篇文章主要为大家详细介绍了简单实现Java版学生管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • Java Web使用Html5 FormData实现多文件上传功能

    Java Web使用Html5 FormData实现多文件上传功能

    这篇文章主要介绍了Java Web使用Html5 FormData实现多文件上传功能,需要的朋友可以参考下
    2017-07-07
  • 关于Java中静态代码块的执行浅析

    关于Java中静态代码块的执行浅析

    这篇文章主要给大家介绍了关于Java中静态代码块执行的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-09-09
  • Java中文件写入内容的几种常见方法

    Java中文件写入内容的几种常见方法

    本文主要介绍了Java中文件写入内容的几种常见方法,主要包括使用NIO的Files工具类、通过commons-io的FileUtils工具类、RandomAccessFile、PrintWriter和BufferedWriter这几种,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • SpringBoot定时任务多线程实现示例

    SpringBoot定时任务多线程实现示例

    在真实的Java开发环境中,我们经常会需要用到定时任务来帮助我们完成一些特殊的任务,本文主要介绍了SpringBoot定时任务多线程实现示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • Seata AT模式启动过程图文示例详解

    Seata AT模式启动过程图文示例详解

    这篇文章主要为大家介绍了Seata AT模式启动过程图文示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • Java设计模式之迪米特原则精解

    Java设计模式之迪米特原则精解

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。本篇介绍设计模式七大原则之一的迪米特原则
    2022-02-02
  • Java实现订单超时自动取消的7种方案

    Java实现订单超时自动取消的7种方案

    在电商、外卖、票务等系统中,订单超时未支付自动取消是一个常见的需求,这个功能乍一看很简单,甚至很多初学者会觉得:"不就是加个定时器么?" 但真到了实际工作中,细节的复杂程度往往会超乎预期,本文给大家介绍了Java实现订单超时自动取消的7种方案
    2024-12-12
  • Java以编程方式实现JAR文件的创建

    Java以编程方式实现JAR文件的创建

    在这篇文章中,我们将为大家详细介绍一下利用Java语言以编程方式创建jar文件的过程。文中的示例代码讲解详细,感兴趣的可以了解一下
    2022-07-07

最新评论