-
java poi读取word中附件_Java读取邮件附件
2021-01-06 01:18:14打开邮箱一看,好家伙,一堆邮件,有用的没用的,整的我头皮发麻。赶紧整理一下这些东西。因为这次准备放到日常维护的java项目中日常跑,所以就不用python啦。好了,因为这回不给舅妈看,直接上操作。一、先给邮箱...给舅妈打下手搞了好几天,终于算完事了,可真辛苦(这红烧肉可味道真棒)。
把自己的事情都给落下了。
打开邮箱一看,好家伙,一堆邮件,有用的没用的,整的我头皮发麻。
赶紧整理一下这些东西。
因为这次准备放到日常维护的java项目中日常跑,所以就不用python啦。
好了,因为这回不给舅妈看,直接上操作。
一、先给邮箱开通POP3/SMTP服务服务。
这里拿qq邮箱演示,大家都有哈。
1.首先要确保服务开启
2.需要生成授信码,后续代码中连接的密码不是登录密码,而是用的授信码
二、连接邮箱配置
qq邮箱服务器地址 public static void resceive() throws Exception { // 服务器地址 String servicePath = "pop.qq.com"; // 端口号 String duankou = "110"; // 邮箱名 String emailName = "*******@qq.com"; // 前面提到的授信码 String password = "*********"; // 准备连接服务器的会话信息 Properties props = new Properties(); // 连接超时报错配置 props.setProperty("mail.pop3.timeout", "2000"); props.setProperty("mail.store.protocol", "pop3"); props.setProperty("mail.pop3.port", duankou); props.setProperty("mail.pop3.host", servicePath); // 创建Session实例对象 Session session = Session.getInstance(props); Store store = session.getStore("pop3"); store.connect(emailName , password); // 获得收件箱 只能获取一个月内的邮件 Folder folder = store.getFolder("INBOX"); // 如果要读写的话可以选择READ_WRITE folder.open(Folder.READ_ONLY); // 获得收件箱中的邮件总数 System.out.println("邮件总数: " + folder.getMessageCount()); // 筛选收件箱中带附件的邮件并将文件保存到本地 Message[] messages = folder.getMessages(); parseFileMessage(messages); //释放资源 folder.close(true); store.close(); }
三、对附件文件进行筛选
public static void parseFileMessage(Message ...messages) throws Exception { if (messages == null || messages.length < 1) System.out.println("没有需要处理的邮件"); // 解析所有邮件 for (int i = 0; i < messages.length; i++) { MimeMessage msg = (MimeMessage) messages[i]; System.out.println("主题: " + getSubject(msg)); System.out.println("发件人: " + getFrom(msg)); boolean isContainerAttachment = isContainAttachment(msg); System.out.println("是否包含附件:" + isContainerAttachment); if (isContainerAttachment) { saveAttachment(msg, "D:datamailFile",getSubject(msg)); //保存附件 }else { continue; } System.out.println("当前为第"+msg.getMessageNumber()+"封邮件"); } } /** * 判断邮件中是否包含附件 * @return 存在附件返回true,不存在返回false */ public static boolean isContainAttachment(Part part) throws Exception { boolean flag = false; if (part.isMimeType("multipart/*")) { MimeMultipart multipart = (MimeMultipart) part.getContent(); int partCount = multipart.getCount(); for (int i = 0; i < partCount; i++) { BodyPart bodyPart = multipart.getBodyPart(i); String disp = bodyPart.getDisposition(); if (disp != null && (disp.equalsIgnoreCase(Part.ATTACHMENT) || disp.equalsIgnoreCase(Part.INLINE))) { flag = true; } else if (bodyPart.isMimeType("multipart/*")) { flag = isContainAttachment(bodyPart); } else { String contentType = bodyPart.getContentType(); if (contentType.indexOf("application") != -1) { flag = true; } if (contentType.indexOf("name") != -1) { flag = true; } } if (flag) break; } } else if (part.isMimeType("message/rfc822")) { flag = isContainAttachment((Part)part.getContent()); } return flag; }
四、保存文件
/** * 保存文件 * @param destDir 文件目录 * @param fileName 文件名 * @throws Exception */ public static void saveAttachment(Part part, String destDir,String fileName) throws Exception { if (part.isMimeType("multipart/*")) { //复杂体邮件 Multipart multipart = (Multipart) part.getContent(); //复杂体邮件包含多个邮件体 int partCount = multipart.getCount(); for (int i = 0; i < partCount; i++) { //获得复杂体邮件中其中一个邮件体 BodyPart bodyPart = multipart.getBodyPart(i); //迭代处理邮件体,直到附件为止 String disp = bodyPart.getDisposition(); String decodeName = decodeText(bodyPart.getFileName()); decodeName = StringUtils.isEmpty(decodeName)?fileName:decodeName; if (disp != null && (disp.equalsIgnoreCase(Part.ATTACHMENT) || disp.equalsIgnoreCase(Part.INLINE))) { saveFile(bodyPart.getInputStream(), destDir, decodeName); } else if (bodyPart.isMimeType("multipart/*")) { saveAttachment(bodyPart,destDir,fileName); } else { String contentType = bodyPart.getContentType(); if (contentType.indexOf("name") != -1 || contentType.indexOf("application") != -1) { saveFile(bodyPart.getInputStream(), destDir, decodeName); } } } } else if (part.isMimeType("message/rfc822")) { saveAttachment((Part) part.getContent(),destDir,fileName); } } /** * 读取输入流中的数据保存至指定目录 * @param is 输入流 * @param fileName 文件名 * @param destDir 文件存储目录 */ private static void saveFile(InputStream is, String destDir, String fileName) throws Exception { createEmptyDirectory(destDir); BufferedInputStream bis = new BufferedInputStream(is); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File(destDir + fileName))); int len; while ((len = bis.read()) != -1) { bos.write(len); bos.flush(); } bos.close(); bis.close(); } /** * 创建一个空目录 */ public static void createEmptyDirectory(String directoryPath) throws IOException { File file = new File(directoryPath); if(!file.exists()){ file.mkdirs(); } } /** * 文本解码 */ public static String decodeText(String encodeText) throws Exception { if (encodeText == null || "".equals(encodeText)) { return ""; } else { return MimeUtility.decodeText(encodeText); } }
五、好咯,检查下文件就可以听歌休息去了,想着啥时候再去蹭顿红烧肉呢
-
imap读取邮箱和附件_Java读取邮件附件
2020-11-14 05:41:09打开邮箱一看,好家伙,一堆邮件,有用的没用的,整的我头皮发麻。赶紧整理一下这些东西。因为这次准备放到日常维护的java项目中日常跑,所以就不用python啦。好了,因为这回不给舅妈看,直接上操作。一、先给邮箱...给舅妈打下手搞了好几天,终于算完事了,可真辛苦(这红烧肉可味道真棒)。
把自己的事情都给落下了。
打开邮箱一看,好家伙,一堆邮件,有用的没用的,整的我头皮发麻。
赶紧整理一下这些东西。
因为这次准备放到日常维护的java项目中日常跑,所以就不用python啦。
好了,因为这回不给舅妈看,直接上操作。
一、先给邮箱开通POP3/SMTP服务服务。
这里拿qq邮箱演示,大家都有哈。
1.首先要确保服务开启
2.需要生成授信码,后续代码中连接的密码不是登录密码,而是用的授信码
二、连接邮箱配置
qq邮箱服务器地址 public
三、对附件文件进行筛选
public
四、保存文件
/**
五、好咯,检查下文件就可以听歌休息去了,想着啥时候再去蹭顿红烧肉呢
-
java 读取 邮件 附件_请问javamail是怎么实现附件的发送和接受的?
2021-03-17 12:57:04能给出具体调用接口或则给一个小例子最好!|这两篇文章看看,我以前写javamail的时候也是参考这两篇的,基本上可以满足你的要求http://softwaredev.earthweb.com/java/sdjjavase/article/0,,12395_618471,00....能给出具体调用接口或则给一个小例子最好!
|
这两篇文章看看,我以前写javamail的时候也是参考这两篇的,基本上可以满足你的要求
http://softwaredev.earthweb.com/java/sdjjavase/article/0,,12395_618471,00.html
http://softwaredev.earthweb.com/java/sdjjavase/article/0,,12395_618481,00.html
具体例子,不好意思啦,写的有一段时间了,也只是试试而已,现在也不知道搞哪里去了,准备过几周再写。
|
好像不是哦,我记得是用javax.mail.FetchProfile
我找了曾经写maillist的一段代码:
需要先打开folder,然后..
// 获得所有新邮件的属性和标记
Message[] messages = folder.getMessages();
FetchProfile fp = new FetchProfile();
fp.add(FetchProfile.Item.ENVELOPE);
fp.add(FetchProfile.Item.FLAGS);
fp.add("X-Mailer");
folder.fetch(messages, fp);
Message newMessage = new MimeMessage(session); //带附件的message
newMessage.setContent((Multipart)message.getContent());
我这里是把收到的信件message直接发出去了
|
创建一个MimeBodyPart对象并通过file读取多个文件给它,然后绑定到为MimeMessage创建的MimeMultipart实例,随后把MimeMultipart绑定给MimeMessage,随后发送出去。
MimeMessage.setContent(MimeMultipart)
MimeMultipart.addBodyPart(MimeBodyPart)
读取message的时候要注意,我见过有朋友很随意的就把它当作带附件的信件处理。
可以用instance of来判断一下每封信是否有附件,或者通过带附件标记来判断:
Object content = message.getContent();
if (content instanceof Multipart)
//message带附件
else
//message不带附件
很抱歉我家里机器上没有那几个jar,所以没法具体测试一下,只能根据以前的代码和记忆这么写。
|
mark
-
通过Java读取QQ邮件及邮件解析-附件资源
2021-03-05 15:17:41通过Java读取QQ邮件及邮件解析-附件资源 -
java 读取qq邮件附件_Java实现发送QQ邮件功能(带附件)
2021-03-01 06:55:07Java实现发送QQ邮件功能(带附件)首先我们需要两个jar包,点击下面即可下载这两个包:或者引入mavenjavax.mailmail1.4代码示例:package com.pipi.mail;import javax.activation.DataHandler;import javax.activation...Java实现发送QQ邮件功能(带附件)
首先我们需要两个jar包,点击下面即可下载这两个包:
或者引入maven
javax.mail
mail
1.4
代码示例:
package com.pipi.mail;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.*;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.Date;
import java.util.Properties;
public class SendMail {
public static void main(String[] args) throws Exception {
final String from = "xxxxxxx@qq.com"; //发件人的邮箱地址
String to = "xxxxxxx@qq.com"; //收件人的邮箱地址
String subject = "测试"; //邮件主题
String body = "邮件正文"; //邮件内容
//设置发送邮件的一些属性
Properties prop = new Properties();
prop.setProperty("mail.transport.protocol", "smtp");
prop.setProperty("mail.smtp.host", "smtp.qq.com");
prop.setProperty("mail.smtp.port", "587"); // 有些代码端口是465是有问题的
prop.setProperty("mail.smtp.auth", "true");
prop.setProperty("mail.debug", "true");
prop.setProperty("mail.smtp.ssl.enable", "true"); //qq邮箱必须设置这一项,ssl加密选项
Session session = Session.getDefaultInstance(prop, new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
//这里需要验证邮箱的授权码,QQ邮箱需要授权码
return new PasswordAuthentication(from, "第三方登录授权码");
}
});
MimeMessage message = new MimeMessage(session);
try {
Transport transport = session.getTransport();
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSentDate(new Date());
message.setSubject(subject);
// 创建消息体部分
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText("这是邮件正文");
// 创建多重消息
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart); // 将消息体部分加入到多重消息中
// 创建一个附件
messageBodyPart = new MimeBodyPart();
String filePath = "/Users/apple/Desktop/测试.docx"; // 注意windows的地址问题
File file = new File(filePath);
DataSource source = new FileDataSource(file);
messageBodyPart.setDataHandler(new DataHandler(source));
String fileName = filePath.substring(filePath.lastIndexOf('/') + 1);
System.out.println(fileName);
// messageBodyPart.setFileName(fileName); 出现乱码问题
messageBodyPart.setFileName(MimeUtility.encodeText(fileName));
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);
message.saveChanges();
session.setDebug(true);
transport.connect(from, "第三方登录授权码");
transport.sendMessage(message, message.getAllRecipients());
transport.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
-
java连接Lotes邮件服务器(Domino) 读取邮件内容附件完整实例
2017-08-17 09:31:31java连接Lotes邮件服务器(Domino) 读取邮件内容附件完整实例 -
java获取读取未读邮件旧未读邮件最新邮件删除邮件指定读取指定邮件下载附件内容包括附件包含javamailjar
2018-12-26 11:27:20项目中要求读取指定邮件未读邮件的内容,在网上查了很多资料发现都不行,不是自己想要的,要么是读取最新的,要么是读取第一封邮件,根本就不能读取未读的旧邮件。...java读取未读邮件内容包括附件包含javamail.jar -
java读取邮件时,邮件含有正文跟附件的时候,读取不到正文内容
2017-12-20 17:09:00String pop3Server = "pop3.163.com"; // 收件服务器 pop3.163.com 8531.icoremail.net String protocol = "pop3"; String port = "995"; // 邮件服务端口号 995 String username = "trsnj_xiabin@1 -
java邮件读取工具类,可读取附件,功能强大!
2018-09-28 16:39:15java邮件读取工具类,可读取附件,功能强大,经测试可用。 -
java读取邮件超大附件_javamail在收邮件时可以得到邮件大小,但是javamail在发邮件时怎么得到邮件大小?...
2021-03-15 21:36:24// 设置邮件的文本内容 BodyPart contentPart = new MimeBodyPart(); contentPart.setContent(mailtext,"text/html;charset=GBK"); multipart.addBodyPart(contentPart); /** * 添加附件 */ if (affix.length>0) { ... -
求一个JAVA读取QQ邮件的demo,邮件的内容跟附件都要读取出来
2017-12-20 09:15:16我在网上找的demo,当qq邮件里包含附件与正文内容时,只能读取到附件,正文就读取不到了。 下面这个是我写的,可以拿过去运行看看。困扰我多时了。 http://blog.csdn.net/qq_19806865/article/details/78855326 -
java读取邮箱附件_使用javamail获取附件内容
2021-02-28 08:29:12我正在使用javamail来自动...根据邮件标题,我可以“预测”我需要获取的附件的文件名。但我无法得到它的内容:(我有一个函数public byte[] searchForContent(Part part,String fileName){if(part.getFileName()!=null... -
csv 读取 邮件附件读取
2016-04-28 18:10:10package com.wanwan.csv; import java.io.FileNotFoundException; import java.io.IOException; import java.nio.charset.Charset; import com.csvreader.CsvReader; public class ExcelReader { pr -
用ews-java-api读取邮件正文及附件
2021-01-18 16:11:02原本业务使用javamail通过imap协议读取邮件,后来有个客户那边不支持imap协议,需要改为通过微软的ews(exchange web service)协议读取。结合网上已有的资料,自己测试了一把,以下是可以成功运行的代码 1.maven... -
Java Email 读取邮件异常
2017-10-10 09:07:44这个读取邮件服务器的邮件可以读取一部分,邮件内容大致相同,含有附件,但是读到27左右就发生异常。我读取不含附件的邮件,可以读取到70多份,不会发生异常。红线部分发生异常 异常内容 ![图片说明]... -
java实现读取邮件发送邮件
2016-02-18 11:16:40有些邮箱pop服务器不支持查看是否邮件已经被查看多的功能,只能通过自己认为添加标识标记邮件是已读还是未读 ... * @return 邮件中存在附件返回true,不存在返回false * @throws Messag -
IMAP 读取带附件邮件出错 java.io.IOException: No content
2020-11-16 11:10:21错误:java.io.IOException: No content 还有关于base64字眼 翻墙查询资料有说是读取附件时分批获取 BASE64 输入流的配置导致的 解决:props.setProperty(“mail.imap.partialfetch”, “false”); 关闭即可 -
Java 发送邮件,附件从流中读取,数据生成excel并输出到流中
2017-05-09 20:42:56当有需求,需要把当天的报表文件发送给指定邮箱又不小生成多余的...实现过程是先将数据库里的数据,导出excel文件输出流中(注:不是直接生成文件),发送邮件时附件内容直接从前面excel文件输出流中获取,然后发送邮件 -
imap读取邮箱和附件_java实战SpringBoot 发送邮件和附件,值得学习
2020-11-23 21:15:12SMTP全称为Simple Mail Transfer Protocol(简单邮件传输协议),它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP认证要求必须提供账号和密码才能登陆服务器,其设计目的在于避免... -
ews java api 读取exchange邮件_使用 Exchange 中的 EWS 获取附件
2021-03-14 03:48:08使用 Exchange 中的 EWS 获取附件Get attachments by using EWS in Exchange03/9/2015本文内容了解如何通过在 Exchange 中使用 EWS 托管 API 或 EWS 从 EWS 项目中获取附件。Learn how to get attachments from EWS ... -
java 收件箱_JavaMail读取收件箱退信邮件/分析邮件附件获取Message_Id
2021-03-09 18:38:5622 importjava.util.Arrays;23 importjava.util.Calendar;24 importjava.util.Date;25 importjava.util.Properties;26 27 @Service28 @Slf4j29 @Data30 @ConfigurationProperties(prefix = "spring.mail")31 public ... -
【Java】获取邮件的附件内容
2017-11-02 07:31:33使用Java解析邮件时,想要直接读取附件(Excel表格)里的内容,不是下载附件,该怎么实现? -
利用Java发送邮件(含附件)的例子
2013-04-05 19:41:14利用Java发送邮件(含附件)的例子:1、邮件发送的配置propertity文件内容如下:(utils.properties文件放在src下面)emailsmtp=smtp.qq.comemailaddress=459104018@qq.comemailpass=******2、读取配置文件的类文件... -
java邮件发送(含附件)
2014-07-02 16:24:00利用Java发送邮件(含附件)的例子:1、邮件发送的配置propertity文件内容如下:(utils.properties文件放在src下面)emailsmtp=smtp.qq.comemailaddress=459104018@qq.comemailpass=******2、读取配置文件的类文件... -
javamail 读取邮箱邮件并下载附件
2020-11-24 17:13:13java 从邮箱里面把附件拿出来 代码直接用 package com.kdmins.mail; import com.sun.mail.pop3.POP3Folder; import com.sun.mail.pop3.POP3Store; import com.sun.mail.util.MailSSLSocketFactory; import java....