java 读取eml文件附件方法(附件为base64转码)
来源:互联网 发布:超级玛丽c语言源代码 编辑:程序博客网 时间:2024/06/05 16:55
strEmailEml为eml文件,通过postMethod.getResponseBodyAsString()获取字符串
/**
* 创建amr文件
* @param file
* @param strEmailEml
* @throws Exception
*/
private static void createAmrFile(String strEmailEml) throws Exception {
Properties props = new Properties();
Session session = Session.getDefaultInstance(props, null);
InputStream inMsg = new ByteArrayInputStream(strEmailEml.getBytes("UTF-8"));
Message msg = new MimeMessage(session, inMsg);
Object o = msg.getContent();
if (o instanceof Multipart) {
Multipart multipart = (Multipart) o;
reMultipart(multipart);
} else if (o instanceof Part) {
Part part = (Part) o;
rePart(part);
} else {
System.out.println("类型" + msg.getContentType());
System.out.println("内容" + msg.getContent());
}
}
/**
* @param part 解析内容
* @throws Exception
*/
private static void rePart(Part part) throws Exception {
if (part.getDisposition() != null) {
String strFileNmae = part.getFileName();
if(!StringUtils.isEmpty(strFileNmae))
{ // MimeUtility.decodeText解决附件名乱码问题
strFileNmae=MimeUtility.decodeText(strFileNmae);
System.out.println("附件名称: "+ strFileNmae);
InputStream in = part.getInputStream();// 打开附件的输入流
// 读取附件字节并存储到文件中
FileOutputStream out = new FileOutputStream(file.getPath()+"/"+strFileNmae);
int data;
while ((data = in.read()) != -1) {
out.write(data);
}
in.close();
out.close();
}
System.out.println("内容类型: "+ MimeUtility.decodeText(part.getContentType()));
System.out.println("附件内容:" + part.getContent());
} else {
if (part.getContentType().startsWith("text/plain")) {
System.out.println("文本内容:" + part.getContent());
} else {
// System.out.println("HTML内容:" + part.getContent());
}
}
}
/**
* @param multipart 接卸包裹(含所有邮件内容(包裹+正文+附件))
* @throws Exception
*/
private static void reMultipart(Multipart multipart) throws Exception {
// 依次处理各个部分
for (int j = 0, n = multipart.getCount(); j < n; j++) {
Part part = multipart.getBodyPart(j);// 解包, 取出 MultiPart的各个部分,
// 也可能是另一个小包裹(MultipPart)
// 判断此包裹内容是不是一个小包裹, 一般这一部分是 正文 Content-Type: multipart/alternative
if (part.getContent() instanceof Multipart) {
Multipart p = (Multipart) part.getContent();// 转成小包裹
// 递归迭代
reMultipart(p);
} else {
rePart(part);
}
}
}
* 创建amr文件
* @param file
* @param strEmailEml
* @throws Exception
*/
private static void createAmrFile(String strEmailEml) throws Exception {
Properties props = new Properties();
Session session = Session.getDefaultInstance(props, null);
InputStream inMsg = new ByteArrayInputStream(strEmailEml.getBytes("UTF-8"));
Message msg = new MimeMessage(session, inMsg);
Object o = msg.getContent();
if (o instanceof Multipart) {
Multipart multipart = (Multipart) o;
reMultipart(multipart);
} else if (o instanceof Part) {
Part part = (Part) o;
rePart(part);
} else {
System.out.println("类型" + msg.getContentType());
System.out.println("内容" + msg.getContent());
}
}
/**
* @param part 解析内容
* @throws Exception
*/
private static void rePart(Part part) throws Exception {
if (part.getDisposition() != null) {
String strFileNmae = part.getFileName();
if(!StringUtils.isEmpty(strFileNmae))
{ // MimeUtility.decodeText解决附件名乱码问题
strFileNmae=MimeUtility.decodeText(strFileNmae);
System.out.println("附件名称: "+ strFileNmae);
InputStream in = part.getInputStream();// 打开附件的输入流
// 读取附件字节并存储到文件中
FileOutputStream out = new FileOutputStream(file.getPath()+"/"+strFileNmae);
int data;
while ((data = in.read()) != -1) {
out.write(data);
}
in.close();
out.close();
}
System.out.println("内容类型: "+ MimeUtility.decodeText(part.getContentType()));
System.out.println("附件内容:" + part.getContent());
} else {
if (part.getContentType().startsWith("text/plain")) {
System.out.println("文本内容:" + part.getContent());
} else {
// System.out.println("HTML内容:" + part.getContent());
}
}
}
/**
* @param multipart 接卸包裹(含所有邮件内容(包裹+正文+附件))
* @throws Exception
*/
private static void reMultipart(Multipart multipart) throws Exception {
// 依次处理各个部分
for (int j = 0, n = multipart.getCount(); j < n; j++) {
Part part = multipart.getBodyPart(j);// 解包, 取出 MultiPart的各个部分,
// 也可能是另一个小包裹(MultipPart)
// 判断此包裹内容是不是一个小包裹, 一般这一部分是 正文 Content-Type: multipart/alternative
if (part.getContent() instanceof Multipart) {
Multipart p = (Multipart) part.getContent();// 转成小包裹
// 递归迭代
reMultipart(p);
} else {
rePart(part);
}
}
}
阅读全文
0 0
- java 读取eml文件附件方法(附件为base64转码)
- java 本地生成带附件的eml文件
- Java解析eml内容和附件
- Evolution 打开 eml附件
- java读取eml文件
- javamail写带附件eml文件并调用outlook的方法
- javamail写带附件eml文件并调用outlook的方法
- JAVA代理读取文档里的文件附件
- 读取分析邮件(eml)内容的类。可读头/内容/附件
- java实现附件预览(openoffice+swftools+flexpaper)(解决jsp读取全盘文件问题)
- 附件
- 附件
- 附件
- 上传附件读取exl
- Struts2.0实现的文件上传(单附件和多附件)以及附件下载功能
- Struts2.0实现的文件上传(单附件和多附件)以及附件下载功能
- Struts2.0实现的文件上传(单附件和多附件)以及附件下载功能
- 关于文件/附件下载的Java代码
- Spark 增量操作 insertInto() 与 mode(SaveMode.Append).saveAsTable() 的区别
- logback mdc
- Srping boot 配置文件详解
- 76、java自定义异常
- Tensorflow训练渐渐变慢,迭代一段时间卡死
- java 读取eml文件附件方法(附件为base64转码)
- 第四周项目六
- oracle学习总结(二)
- adb网络调试
- 第七周||建立顺序环形算法库
- 第四周项目 1 建立单链表
- (LaTex)CTex的初次使用心得及入门教程
- jvm系列(九):Java GC 分析
- mysql 连接10055错误