Java中如何读取多部分邮件的HTML格式内容而非纯文本
获取HTML格式邮件内容的解决方案
你的问题出在现有代码的两个关键逻辑上:
- 优先获取纯文本(遇到
text/plain就break),未优先处理HTML内容 - 处理HTML时用Jsoup把HTML转成了纯文本,丢失了原始HTML结构
修改后的代码
public String getHtmlFromMessage(Message message) throws MessagingException, IOException { String result = ""; if (message.isMimeType("text/html")) { // 直接获取HTML内容 result = message.getContent().toString(); } else if (message.isMimeType("multipart/*")) { MimeMultipart mimeMultipart = (MimeMultipart) message.getContent(); result = getHtmlFromMimeMultipart(mimeMultipart); } else if (message.isMimeType("text/plain")) { // 无HTML时降级到纯文本,用pre标签保留格式 result = "<pre>" + message.getContent().toString() + "</pre>"; } return result; } public String getHtmlFromMimeMultipart(MimeMultipart mimeMultipart) throws MessagingException, IOException { String result = ""; int count = mimeMultipart.getCount(); boolean foundHtml = false; for (int i = 0; i < count; i++) { BodyPart bodyPart = mimeMultipart.getBodyPart(i); if (bodyPart.isMimeType("text/html")) { // 保留原始HTML结构,不转纯文本 result = (String) bodyPart.getContent(); foundHtml = true; break; // 找到HTML就停止遍历,优先使用HTML内容 } else if (bodyPart.isMimeType("text/plain") && !foundHtml) { // 未找到HTML时才处理纯文本 result = "<pre>" + bodyPart.getContent().toString() + "</pre>"; } else if (bodyPart.getContent() instanceof MimeMultipart) { String nestedHtml = getHtmlFromMimeMultipart((MimeMultipart) bodyPart.getContent()); if (!nestedHtml.isEmpty()) { result = nestedHtml; foundHtml = true; break; } } } return result; }
关键修改说明
- 调整内容优先级:先检查并获取
text/html类型内容,仅无HTML时才降级到纯文本 - 保留原始HTML:移除
org.jsoup.Jsoup.parse(html).text()调用,直接返回原始HTML字符串 - 嵌套多部分处理:递归处理嵌套的
MimeMultipart时,优先寻找其中的HTML内容 - 纯文本兼容处理:用
<pre>标签包裹纯文本,保证格式在HTML中得以保留
原代码调试输出(纯文本)
_ ____ ____From: Mohammad Rahmat Ullah <mohammedrahmathullah@iqratechnology.com> __Sent: Tuesday, August 9, 2022 3:14 PM__To: sidraansari@iqratechnologygulf.com__Cc: sabashaikh@iqratechnology.com; mohdsalmankhan@iqratechnology.com; noorullahkhan@iqratechnologygulf.com__Subject: FW: Screenshot 2022-08-08 at 16.33.02____ ____Dear Sidra,____ ____Please do the same and send me.. Visit 2013 sharepoint for older records.____ ____Portal.abaninvestment.com – 2013 Sharepoint____ ____ ____Best Regards,____Mohammed Rahmath____SharePoint Consultant________Plot No. T-17, Software Technology Park, Beside____Wockhardt Pharma, Opp. Garware Stadium, MIDC____Chikalthana, Aurangabad 431007, Maharashtra, India____ <http://www.iqratechnology.com/> www.iqratechnology.com____ ____ ____ ____From: Tariq Afzal Ehtesham [mailto:Tariq.Afzal@abaninvestment.com] __Sent: 09 August 2022 12:26 PM__To: Mohammad Rahmat Ullah <mohammedrahmathullah@iqratechnology.com <mailto:mohammedrahmathullah@iqratechnology.com> >; sabashaikh@iqratechnology.com <mailto:sabashaikh@iqratechnology.com> ; IT Service Desk <it.servicedesk@abaninvestment.com <mailto:it.servicedesk@abaninvestment.com> >__Subject: FW: Screenshot 2022-08-08 at 16.33.02____ ____ ____Dear Rahmath,____ ____Kindly provide the report for GCGOi as requested below in yellow highlight.____ ____Regards,____ ____ ____ ______ <http://www.abaninvestment.com> __ABAN INVESTMENT__Ghobash Group Operating Companies________ <https://www.linkedin.com/company/aban-investment> ____ ____WWW.ABANINVESTMENT.COM <http://WWW.ABANINVESTMENT.COM> ______ ____TARIQ AFZAL EHTESHAM__Manager - Business Solutions__M:+971 55 4722597 | T: +971 4 5961800 | Ext: 5207__PO Box:125848, Makeen Building, Airport Road, Dubai, UAE______ <http://www.abaninvestment.com> ____ ______This e-mail is private and confidential. If received in error, please delete immediately. Sender does not accept any legal responsibility for the contents of this e-mail and/or its attachments.____From: Jerilyn Dente __Sent: Tuesday, August 9, 2022 10:48 AM__To: Tariq Afzal Ehtesham <Tariq.Afzal@abaninvestment.com <mailto:Tariq.Afzal@abaninvestment.com> >__Cc: Banan T. Alkilani <Banan.Alkilani@gcg.ae <mailto:Banan.Alkilani@gcg.ae> >; Kasinathan Kathiresan <Kasinathan.Kathiresan@gcg.ae <mailto:Kasinathan.Kathiresan@gcg.ae> >; Digi Ana Caguindagan <Digi.Caguindagan@gcg.ae <mailto:Digi.Caguindagan@gcg.ae> >__Subject: RE: Screenshot 2022-08-08 at 16.33.02____ ____ ____Dear Tariq, ____We need you kind assistance. ____We have upcoming ISO audit and we need below reports to be presented first to GM.____* How many new CAF in 2020/2021 __* How many total new customer in 2020/2021____ ____ ____ ____ ______ <https://www.gcg.ae> __A Ghobash Group Company______ <http://www.mps-uae.com> ________ <https://www.linkedin.com/company/gulf-commercial-group_2> ____ <https://www.facebook.com/GCG.ES> ____ <https://twitter.com/GCG_ES> ____ <https://www.youtube.com/channel/UChwPaZduB6una81a9YosfJQ> ____ ____WWW.MPS-UAE.COM <http://WWW.MPS-UAE.COM> ____WWW.GCG.AE <http://WWW.GCG.AE> ____ ______ ____JERILYN DENTE__Sales Coordinator__M:+971 55 5027498 | T: +971 2 2014999 | Ext: 7400__PO Box:47257, Madinat Zayed Tower, 12th Floor, Sultan Bin Zayed the First Street, Abu Dhabi, UAE______ <https://www.gcg.ae/uaepass/digitalsignature> ____ ____From: Kasinathan Kathiresan __Sent: Monday, August 8, 2022 4:58 PM__To: Jerilyn Dente__Cc: Digi Ana Caguindagan__Subject: RE: Screenshot 2022-08-08 at 16.33.02____ ____ ____This has to be collected from IT ____ ____ ____ ______ <https://www.gcg.ae> __A Ghobash Group Company______ <http://www.mps-uae.com> ________ <https://www.linkedin.com/company/gulf-commercial-group_2> ____ <https://www.facebook.com/GCG.ES> ____ <https://twitter.com/GCG_ES> ____ <https://www.youtube.com/channel/UChwPaZduB6una81a9YosfJQ> ____ ____WWW.MPS-UAE.COM <http://WWW.MPS-UAE.COM> ____WWW.GCG.AE <http://WWW.GCG.AE> ____ ______ ____KASINATHAN KATHIRESAN__Credit Control Supervisor__M:+971 50 7363878 | T: +971 4 5281000 | Ext: 5435__PO Box:25940, Makeen Building, Airport Road, Dubai, UAE______ <https://www.gcg.ae/uaepass/digitalsignature> ____ ____From: Jerilyn Dente __Sent: Monday, August 8, 2022 4:52 PM__To: Kasinathan Kathiresan__Cc: Digi Ana Caguindagan__Subject: FW: Screenshot 2022-08-08 at 16.33.02____ ____ ____Dear Sir, ____Please share the number of new customers for year 2020 & 2021____ ____ ____ ______ <https://www.gcg.ae> __A Ghobash Group Company______ <http://www.mps-uae.com> ________ <https://www.linkedin.com/company/gulf-commercial-group_2> ____ <https://www.facebook.com/GCG.ES> ____ <https://twitter.com/GCG_ES> ____ <https://www.youtube.com/channel/UChwPaZduB6una81a9YosfJQ> ____ ____WWW.MPS-UAE.COM <http://WWW.MPS-UAE.COM> ____WWW.GCG.AE <http://WWW.GCG.AE> ____ ______ ____JERILYN DENTE__Sales Coordinator__M:+971 55 5027498 | T: +971 2 2014999 | Ext: 7400__PO Box:47257, Madinat Zayed Tower, 12th Floor, Sultan Bin Zayed the First Street, Abu Dhabi, UAE______ <https://www.gcg.ae/uaepass/digitalsignature> ____ ____From: Banan T. Alkilani __Sent: Monday, August 8, 2022 4:34 PM__To: Jerilyn Dente; Digi Ana Caguindagan__Subject: Screenshot 2022-08-08 at 16.33.02____ ____ ____Hi Jeri &Digi,____ ____Can you please help getting me the info for 2020 and 2021 for new customers achieved to target. Also the number of new machines sold in 2020 and 2021. This is for the iso audit this week. Thanks ________ ______ <https://www.gcg.ae> __A Ghobash Group Company______ <http://www.mps-uae.com> ________ <https://www.linkedin.com/company/gulf-commercial-group_2> ____ <https://www.facebook.com/GCG.ES> ____ <https://twitter.com/GCG_ES> ____ <https://www.youtube.com/channel/UChwPaZduB6una81a9YosfJQ> ____ ____WWW.MPS-UAE.COM <http://WWW.MPS-UAE.COM> ____WWW.GCG.AE <http://WWW.GCG.AE> ____ ______ ____BANAN T. ALKILANI__Enterprise Division Sales Manager – UAE__M:+971 50 2077878 | T: +971 2 2014999 | Ext: 7402__PO Box:47257, Madinat Zayed Tower, 12th Floor, Sultan Bin Zayed the First Street, Abu Dhabi, UAE______ <https://www.gcg.ae/uaepass/digitalsignature> ____ ____
内容的提问来源于stack exchange,提问作者Mohd Salman
相关产品推荐
相关产品推荐

