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

作者:汪先森 时间:2023-11-09 03:12:34 

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

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

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入门教程之接收邮件(4)

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

标签:JavaMail,接收邮件
0
投稿

猜你喜欢

  • C#实现基于IE内核的简单浏览器完整实例

    2021-12-04 02:08:02
  • Android Studio3安装图文教程

    2022-03-21 04:26:44
  • 深入学习Kotlin 枚举的简洁又高效进阶用法

    2022-11-05 02:39:11
  • 使用genymotion访问本地上Tomcat上数据的方法

    2022-11-23 05:51:43
  • C#中的timer与线程使用

    2023-08-21 00:13:11
  • 详解SpringMVC验证框架Validation特殊用法

    2023-06-08 22:23:29
  • C# using()的使用方法

    2022-03-02 23:23:37
  • Java简单实现调用命令行并获取执行结果示例

    2023-02-08 18:53:32
  • java注解的类型知识点总结

    2022-11-04 00:26:02
  • 将JavaDoc注释生成API文档的操作

    2023-06-16 18:24:06
  • Kotlin Navigation可视化开发详解

    2022-10-18 10:55:56
  • java序列化与反序列化的使用方法汇总

    2022-02-27 14:47:25
  • Java实现简单的五子棋小游戏

    2023-11-25 07:36:13
  • c#生成随机数示例分享

    2023-10-04 06:54:50
  • 如何搭建新的WPF项目框架

    2023-09-28 08:18:05
  • Volatile关键字的使用案例

    2022-01-27 16:37:05
  • Unity3d 如何更改Button的背景色

    2023-10-02 15:48:39
  • 深入理解Java设计模式之建造者模式

    2022-12-06 00:57:37
  • 设计简单的Android图片加载框架

    2023-08-06 22:23:18
  • SpringBoot yml配置文件读取方法详解

    2022-12-13 18:04:19
  • asp之家 软件编程 m.aspxhome.com