javamail读取并解析eml文件(java邮件全部解析 eml)

本篇文章给大家谈谈javamail读取并解析eml文件,以及java邮件全部解析 eml对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

1、Delphi7读取eml邮件文件用什么方法好2、java 解析 eml的源代码3、java读取本地*.msg如何获取收件人4、怎么用java生成一个.eml文件

Delphi7读取eml邮件文件用什么方法好

直接读取文件内容,然后解析。大部分EML文件是base64编码的字符串,你可以自己解析它。读取eml文件的类应该也有。

java 解析 eml的源代码

// 从EML文件得到MimeMessage对象

MimeMessage message = new MimeMessage(session, new FileInputStream(emlFile));

public static String getMailSubject(Message message) throws Exception {

return MimeUtility.decodeText(message.getSubject());

}

public static String getMailSender(Message message) throws Exception {

String emailSender = null;

Address[] addresses = message.getFrom();

if (addresses == null || addresses.length  1) {

throw new IllegalArgumentException(“该邮件没有发件人”);

}

// 获得发件人

InternetAddress address = (InternetAddress) addresses[0];

String senderName = address.getPersonal();

if (senderName != null) {

senderName = MimeUtility.decodeText(senderName);

emailSender = senderName + “” + address.getAddress() + “”;

} else {

senderName = address.getAddress();

}

return emailSender;

}

public static String getMailRecipients(Message message, Message.RecipientType recipientType) throws Exception {

StringBuilder builder = new StringBuilder();

Address[] addresses = null;

if (recipientType == null) {

addresses = message.getAllRecipients();

} else {

addresses = message.getRecipients(recipientType);

}

if (addresses == null || addresses.length  1) {

throw new IllegalArgumentException(“该邮件没有收件人”);

}

for (Address address : addresses) {

InternetAddress iAddress = (InternetAddress) address;

builder.append(iAddress.toUnicodeString()).append(“, “);

}

return builder.deleteCharAt(builder.length() – 1).toString();

}

public static String getMailSendDate(Message message, String pattern) throws Exception {

String sendDateString = null;

if (pattern == null || “”.equals(pattern.trim())) {

pattern = “yyyy年MM月dd日 E HH:mm”;

}

Date sendDate = message.getSentDate();

sendDateString = new SimpleDateFormat(pattern).format(sendDate);

return sendDateString;

}

public static boolean containsAttachment(Part part) throws Exception {

boolean flag = false;

if (part != null) {

if (part.isMimeType(“multipart/*”)) {

MimeMultipart mp = (MimeMultipart) part.getContent();

for (int i = 0; i  mp.getCount(); i++) {

BodyPart bodyPart = mp.getBodyPart(i);

String disposition = bodyPart.getDisposition();

if (disposition != null  (Part.ATTACHMENT.equalsIgnoreCase(disposition)

|| Part.INLINE.equalsIgnoreCase(disposition))) {

flag = true;

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

flag = containsAttachment(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 = containsAttachment((Part) part.getContent());

}

}

return flag;

}

public static boolean isSeen(Message message) throws Exception {

if (message == null) {

throw new MessagingException(“Message is empty”);

}

return message.getFlags().contains(Flags.Flag.SEEN);

}

public static boolean isReplaySign(Message message) throws Exception {

if (message == null) {

throw new MessagingException(“Message is empty”);

}

boolean replaySign = false;

String[] headers = message.getHeader(“Disposition-Notification-To”);

if (headers != null  headers.length  0) {

replaySign = true;

}

return replaySign;

}

public static String getMailPriority(Message message) throws Exception {

if (message == null) {

throw new MessagingException(“Message is empty”);

}

String priority = “普通”;

String[] headers = message.getHeader(“X-Priority”);

if (headers != null  headers.length  0) {

String mailPriority = headers[0];

if (mailPriority.indexOf(“1”) != -1 || mailPriority.indexOf(“High”) != -1) {

priority = “紧急”;

} else if (mailPriority.indexOf(“5”) != -1 || mailPriority.indexOf(“Low”) != -1) {

priority = “低”;

} else {

priority = “普通”; // 3或者Normal;

}

}

return priority;

}

public static void getMailTextContent(Part part, StringBuilder content) throws Exception {

if (part == null) {

throw new MessagingException(“Message content is empty”);

}

boolean containsTextInAttachment = part.getContentType().indexOf(“name”)  0;

if (part.isMimeType(“text/*”)  containsTextInAttachment) {

content.append(part.getContent().toString());

} else if (part.isMimeType(“message/rfc822”)) {

getMailTextContent((Part) part.getContent(), content);

} else if (part.isMimeType(“multipart/*”)) {

Multipart mp = (Multipart) part.getContent();

for (int i = 0; i  mp.getCount(); i++) {

BodyPart bodyPart = mp.getBodyPart(i);

getMailTextContent(bodyPart, content);

}

} else if (part.isMimeType(“image/*”)) {

// TODO part.getInputStream()获得输入流然后输出到指定的目录

} else {

// TODO 其它类型的contentType, 未做处理, 直接输出

content.append(part.getContent().toString());

}

}

public static void saveAttachment(Part part, String destDir) throws Exception {

if (part == null) {

throw new MessagingException(“part is empty”);

}

// 复杂的邮件包含多个邮件体

if (part.isMimeType(“multipart/*”)) {

Multipart mp = (Multipart) part.getContent();

// 遍历每一个邮件体

for (int i = 0; i  mp.getCount(); i++) {

BodyPart bodyPart = mp.getBodyPart(i);

// bodyPart也可能有多个邮件体组成

String disposition = bodyPart.getDisposition();

if (disposition == null  (Part.ATTACHMENT.equalsIgnoreCase(disposition)

|| Part.INLINE.equalsIgnoreCase(disposition))) {

InputStream in = bodyPart.getInputStream();

saveFile(in, destDir, decodeText(bodyPart.getFileName()));

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

saveAttachment(bodyPart, destDir);

} else {

String contentType = bodyPart.getContentType();

if (contentType.indexOf(“name”) != -1 || contentType.indexOf(“application”) != -1) {

saveFile(bodyPart.getInputStream(), destDir, decodeText(bodyPart.getFileName()));

}

}

}

} else if (part.isMimeType(“message/rfc822”)) {

saveAttachment((Part) part.getContent(), destDir);

}

}

public static void saveFile(InputStream in, String destDir, String fileName) throws Exception {

FileOutputStream out = new FileOutputStream(new File(destDir + fileName));

byte[] buffer = new byte[1024];

int length = 0;

while ((length = in.read(buffer)) != -1) {

out.write(buffer, 0, length);

}

out.close();

in.close();

}

public static String decodeText(String encodedText) throws Exception {

if (encodedText == null || “”.equals(encodedText.trim())) {

return “”;

} else {

return MimeUtility.decodeText(encodedText);

}

}

javamail读取并解析eml文件(java邮件全部解析 eml)

java读取本地*.msg如何获取收件人

1、可以当String来解析

2、java.mail , MimeMessage 再取相关的——应该是.eml文件。

怎么用java生成一个.eml文件

.eml文件是邮件文件,使用javamail发送邮件,在发送邮件的时候,将邮件保存在本地即可得到.eml文件

javamail读取并解析eml文件的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java邮件全部解析 eml、javamail读取并解析eml文件的信息别忘了在本站进行查找喔。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月31日 16:35:31
下一篇 2024年3月31日 16:44:40

相关推荐

  • linux给文件写权限,linux怎么给文件权限

    linux宝塔写入权限不足 1、可以使用chmod命令修改权限。语法:chmod [-cfvR] [–help] [–version] mode file…说明 : Linux/Unix 的档案调用权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所调用。 2、通过更改文件权限可以使用c…

    2024年5月23日
    4400
  • 包含c语言对txt文件命名的词条

    如何在C语言编程里面修改源文件名字 如果你是在WINDOWS的话,简单了,随便用个编辑器,比如记事本,然后写c源程序,保存到你想要保存的位置。如果你在DOS下,可以用edit,写好以后,按alt键,选择文件菜单,然后保存。 用open打开文件,注意操作模式使用“修改”或者“添加” 用write或者fprintf向文件中写入你的内容。 用close关闭文件。 …

    2024年5月23日
    4300
  • c语言多文件调用,c语言多文件操作

    c语言一个结构体如何在多个源文件里面调用? 在这种方法中,可以先将多个源文件分别编译成目标文件,然后再将它们链接成一个可执行文件。 在头文件里定义结构,例如:typedef struct { int a, b;} S;S s_instance;在其他文件里引用就可以。 创建程序入口点main函数,在main函数中条用其它函数。达到同时运行的母的。如果不这样,…

    2024年5月23日
    3500
  • linux.o生成,linux 生成core文件

    linux下多个.o文件如何链接生成可执行程序 你好!很简单,使用-o选项就可以了。如果有a.o,b.o,c.o,d.o4个.o文件,则使用以下命令:gcc -o (生成的目标名称)test a.o b.o c.o d.o 希望对你有所帮助,望采纳。 连接成可执行文件了:gcc hello.c -o h 这时,你的当前目录下就多出了一个叫 h 的文件,它就是…

    2024年5月23日
    3700
  • 为linux命令做链接gcc,linux cp 链接文件

    linux系统中gcc的命令怎么用? 1、linux系统常用操作命令linux系统常用操作命令如下:ls:全拼list,功能是列出目录的内容及其内容属性信息。cd:全拼change directory,功能是从当前工作目录切换到指定的工作目录。cp:全拼copy,其功能为复制文件或目录。 2、linux系统常用操作命令如下:ls:全拼list,功能是列出目录…

    2024年5月23日
    3800
  • java将文件转换为二进制,java将文件转成二进制

    Java中如何把图片转换成二进制流 1、所以定义的数组长度为10240,也就是10kb吧,当然你也可以定义小点,然後分次读。反正二进制都在这个数组里面,最後两句我只是举了个例子教你怎麼看这个二进制,第一个是现实二进制对应的整数,第二个是显示二进制了。 2、//执行 g.dispose(); //输出图片结果 saveImage(image); }我能够输出绘…

    2024年5月23日
    3600
  • java读取文件内容乱码,java读取文件编码格式

    java中filewriter中文乱码怎么解决? 1、如果你期望写到文件中的汉字是 GBK编码,可以写文件时,将字符串准换成 GBK编码的byte[]。网页编码和输出流编码一致。 2、读取文件的时候如果是用的read方法(字节流),碰到中文输出就是乱码,然后存储的时候设置下编码为GBK或者是UTF-8形式即可,可以有效的解决乱码问题。 3、只是个别文件出现了…

    2024年5月23日
    4000
  • java写property文件,java写入properties

    javaweb怎样在classpath建立一个property配置文件 1、一般在scr下面新建一个属性文件*.properties,如a.properties 然后在Java程序中读取或操作这个属性文件。 2、在我的电脑界面,鼠标右键点击“此电脑”。在弹出的列表中,点击最下方的“属性”。在跳转到的界面中,点击“高级系统设置”。在弹出的系统属性界面,点击右下…

    2024年5月23日
    4100
  • excel文件多人同时编辑,excel文件怎么多人编辑

    多人编辑同一个excel怎么弄 1、点击审阅 打开Excel表格,点击界面上方的审阅。共享工作簿 点击界面右上方的共享工作簿。勾选同时编辑 勾选允许多用户同时编辑,点击下面的确定。 2、打开需要进行协同编辑的Excel表格,在菜单栏中找到【特色应用】选项。单击【特色应用】项下的【在线协作】功能。弹出一个上传文档的窗口,需等待文件上传成功后进行下一步操作。 3…

    2024年5月23日
    3400
  • linux上传文件覆盖,linux文件覆盖命令

    linux怎样将文件覆盖到另一个文件 1、cp -f 强行复制文件或目录,不论目标文件或目录是否已存在。 2、linux系统使用cp命令即可将一个文件夹里面的文件复制到另外一个文件夹里面。这个命令相当于dos下面的copy命令,具体用法是:cp_r源文件目的文件,其中参数r是指连同源文件中的子目录一同拷贝。 3、Linux cp命令主要用于复制文件或目录,英…

    2024年5月23日
    3600

发表回复

登录后才能评论



关注微信