java mail 已发送_JavaMail获取已发送邮件

public static voidmain(String args[]) {

Properties props= new Properties(); //参数配置

props.setProperty("mail.transport.protocol", "smtp"); //使用的协议(JavaMail规范要求)

props.setProperty("mail.smtp.host", "smtp.exmail.qq.com"); //发件人的邮箱的SMTP服务器地址

props.setProperty("mail.smtp.auth", "true"); //需要请求认证//PS:某些邮箱服务器要求SMTP连接需要使用SSL安全认证(为了提高安全性,邮箱支持SSL连接,也可以自己开启),//如果无法连接邮件服务器,仔细查看控制台打印的 log,如果有有类似"连接失败,要求 SSL安全连接"等错误,//开启 SSL安全连接//SMTP服务器的端口(非 SSL连接的端口一般默认为 25,可以不添加,如果开启了SSL连接,//需要改为对应邮箱的SMTP服务器的端口,具体可查看对应邮箱服务的帮助,//QQ邮箱的SMTP(SLL)端口为465或587

final String smtpPort = "465";

props.setProperty("mail.smtp.port", smtpPort);

props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

props.setProperty("mail.smtp.socketFactory.fallback", "false");

props.setProperty("mail.smtp.socketFactory.port", smtpPort);

Session session=Session.getDefaultInstance(props);

session.setDebug(false);try{

Store store= session.getStore("imap");

store.connect("imap.exmail.qq.com", "it01@tofba.com", "*****");//change the user and password accordingly

Folder folder = store.getFolder("inbox");if (!folder.exists()) {

System.out.println("inbox not found");

System.exit(0);

}

folder.open(Folder.READ_ONLY);

Message[] messages=folder.getMessages();if (messages == null || messages.length <= 0) {

System.out.println("this inbox no messages");

System.exit(0);

}for(Message message : messages) {

String subject=message.getSubject();if(StringUtils.isNotBlank(subject)) {

System.out.println("subject:" +subject);

}/** 解析邮件内容*/Object content=message.getContent();if (null !=content) {if (content instanceofMimeMultipart) {

MimeMultipart multipart=(MimeMultipart)content;

parseMultipart(multipart);

}

}

}

}catch(Exception e) {

e.printStackTrace();

}

}/*** 对复杂邮件的解析

*

*@parammultipart

*@throwsMessagingException

*@throwsIOException*/

public static void parseMultipart(Multipart multipart) throwsMessagingException, IOException {int count =multipart.getCount();for (int idx = 0; idx < count; idx++) {

BodyPart bodyPart=multipart.getBodyPart(idx);

System.out.println(bodyPart.getContentType());if (bodyPart.isMimeType("text/plain")) {

System.out.println(bodyPart.getContent());

}else if (bodyPart.isMimeType("text/html")) {

System.out.println(bodyPart.getContent());

}else if (bodyPart.isMimeType("multipart/*")) {

Multipart mpart=(Multipart)bodyPart.getContent();

parseMultipart(mpart);

}else if (bodyPart.isMimeType("application/octet-stream")) {

String disposition=bodyPart.getDisposition();

System.out.println(disposition);if (StringUtils.isNotBlank(disposition) &&disposition.equalsIgnoreCase(BodyPart.ATTACHMENT)) {

String fileName=bodyPart.getFileName();

InputStream is=bodyPart.getInputStream();

copy(is,new FileOutputStream("D:\\tofba\\email\\" +fileName));

}

}

}

}/*** 文件拷贝,在用户进行附件下载的时候,可以把附件的InputStream传给用户进行下载

*

*@paramis

*@paramos

*@throwsIOException*/

public static voidcopy(InputStream is, OutputStream os)throwsIOException {byte[] bytes = new byte[1024];int len = 0;while ((len = is.read(bytes)) != -1) {

os.write(bytes,0, len);

}if (os != null)

os.close();if (is != null)

is.close();

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539646.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ORA-08103: object no longer exists

今天工具箱报错&#xff1a; ORA-08103: object no longer exists 查了原因&#xff0c;是有session在操作表&#xff0c;比如插入&#xff0c;更新等。而工具箱这个操作刚好在select表&#xff0c;所以报错。-------下文是英文解释----- ORA-08103: object no longer exists错…

【Spark】Spark-空RDD判断与处理

Spark-空RDD判断与处理 SparkKafkaDemo - Streaming Statisticsrdd isempty count_百度搜索Spark RDD.isEmpty costs much time - Stack OverflowSpark Streaming中空RDD的处理-Spark-about云开发[SPARK-5270] Provide isEmpty() function in RDD API - ASF JIRA19 Spark Stre…

JDBC开发步骤

JDBC开发步骤&#xff1a; 1、加载数据库驱动 2、通过DriverManager获取数据库连接Connection 3、通过Connection获取Statement/PreparedStatement 4、将SQL语句绑定到Statement/PreparedStatement中去&#xff0c;准备向数据库发送SQL语句 5、执行完sql语句后&#xff0c…

DAY3-“忙里偷闲”找你玩耍2018-1-11

接触Java第三天&#xff0c;嘿嘿&#xff0c;今天近代史期末考试&#xff0c;提前一小时交卷&#xff0c;回宿舍继续学习&#xff0c;中午去见女神姐姐了&#xff0c;每次见完女神姐姐都是满满地动力。这次女神姐姐告诉我们要好好规划自己的时间&#xff0c;早上花20分钟规划好…

java 数据保存内存_java中的各种数据类型在内存中存储的方式 一

1.java是如何管理内存的java的内存管理就是对象的分配和释放问题。(其中包括两部分)分配&#xff1a;内存的分配是由程序完成的&#xff0c;程序员需要通过关键字new为每个对象申请内存空间(基本类型除外)&#xff0c;所有的对象都在堆(Heap)中分配空间。释放&#xff1a;对象的…

Gradle学习之构建java与web项目

一.使用Gradle的java插件构建Java项目 1&#xff09;Gradle插件包含了若干个接口定义和已有的任务项&#xff0c;语法结构&#xff1a;apply plugin:插件名 ,此处我们定义插件 apply plugin : java 2&#xff09;Gradle希望我们的java项目需要遵循以下规范&#xff1a; src/mai…

Hibernate单表开发步骤

Hibernate单边开发步骤&#xff1a; 1、创建Configuration&#xff0c;加载src/hibernate.cfg.xml配置文件&#xff0c;该配置文件中又去加载Hello.hbm.xml映射文件。 2、通过Configuration创建重量级SessionFactory。重量级&#xff1a;创建慢&#xff0c;内存占用大&#…

基于ssm出租车管理系统的设计与实现论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本出租车管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息&…

redission java_Java注解如何基于Redission实现分布式锁

这篇文章主要介绍了Java注解如何基于Redission实现分布式锁,文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下1、定义注解类Target({ ElementType.METHOD })Retention(RetentionPolicy.RUNTIME)Documentedpublic i…

Spring Security源码分析四:Spring Social实现微信社交登录

2019独角兽企业重金招聘Python工程师标准>>> 社交登录又称作社会化登录&#xff08;Social Login&#xff09;&#xff0c;是指网站的用户可以使用腾讯QQ、人人网、开心网、新浪微博、搜狐微博、腾讯微博、淘宝、豆瓣、MSN、Google等社会化媒体账号登录该网站。 前言…

jdbc开发优缺点

1&#xff09;优点&#xff1a;简单易学,上手快,非常灵活构建SQL&#xff0c;效率高 2&#xff09;缺点&#xff1a;代码繁琐&#xff0c;难以写出高质量的代码&#xff08;例如&#xff1a;资源的释放&#xff0c;SQL注入安全性等&#xff09; 开发者既要写业务逻辑&#xff0…

java numberformat 方法_Java NumberFormat parse()用法及代码示例

parse(str)方法是java.text.NumberFormat的内置方法&#xff0c;该方法从给定字符串的开头解析文本以产生数字。该方法可能不使用给定字符串的整个文本用法:public Number parse?(String str)参数&#xff1a;该函数接受一个字符串str&#xff0c;其开头应进行分析。返回值&am…

hibernate开发优缺点

1&#xff09;优点&#xff1a;不用写SQL&#xff0c;完全以面向对象的方式设计和访问&#xff0c;不用管底层具体数据库的语法&#xff0c;&#xff08;例如&#xff1a;分页&#xff09;便于理解。 2&#xff09;缺点&#xff1a;处理复杂业务时&#xff0c;灵活度差, 复杂的…

求方程的解 Solve the Equation

为什么80%的码农都做不了架构师&#xff1f;>>> 问题&#xff1a; Solve a given equation and return the value of x in the form of string "x#value". The equation contains only , - operation, the variable x and its coefficient. If there is …

[C#学习] DataAdapter.Fill()分页

查询结果分页是以较小数据子集&#xff08;即页&#xff09;的形式返回查询结果的过程。 它通常用于以易于管理的小块形式向用户显示结果。DataAdapter 提供了通过 Fill 方法的重载来仅返回一页数据的功能。 但是&#xff0c;对于大量的查询结果&#xff0c;它可能并不是首选的…

java流读取字符串_javaIO之字符流是怎么读取的?

最近在看io相关的知识&#xff0c;遇到一些小问题&#xff0c;以下有例子来说明问题&#xff1a;比如&#xff1a;12345 是一个十进制数根据ASCII码找到是 &#xff1a;二进制 00110001 00110010 00110011 00110100 00110101十进制4950515253十六进制 0x310x320x330x340x35文件…

什么是mybatis,mybatis有什么特点

jdbc开发优缺点&#xff1a;http://blog.csdn.net/zengmingen/article/details/51180796 hibernate开发优缺点&#xff1a;http://blog.csdn.net/zengmingen/article/details/51180805 1&#xff09;基于上述二种支持&#xff0c;我们需要在中间找到一个平衡点呢&#xff1f;结…

简易RPC框架实现

写在最前面 PRC(Remote Procedure Call) 远程过程调用。通俗的讲就是程序通过RPC框架调用远程主机的方法就如同调用本地方法一样。Dubbo就是这样一个Rpc框架&#xff0c;本文主要参考Dubbo的设计思路&#xff0c;简易实现了Rpc框架。 本文涉及到知识点包括&#xff1a; Jdk 动态…

kafka java获取topic_通过编程方式获取Kafka中Topic的Metadata信息

如果我们需要通过编程的方式来获取到TopicMetadataRequest请求到 def findLeader(topic: String): Unit {val consumer connect("www.iteblog.com", 9092)val req TopicMetadataRequest(TopicMetadataRequest.CurrentVersion,0, kafkaGroupId, List(topic))val to…

redis java 遍历key_java遍历读取整个redis数据库实例

redis提供了灵活的数据查询方式&#xff0c;最牛的就是key的搜索支持正则表达式。jedis.keys(“*”);表示搜索所有keyjedis.keys(“abc*”)表示搜索开头为abc的key数据遍历了key就能遍历到value。其实就是一个setRedisDO rd new RedisDO();rd.open();Set s rd.jedis.keys(&qu…