• 使用Java mail发送邮件附件出现附件上产生.eml文件夹的问题及附件名.bin结尾问题


    近期,线上项目发出邮件是PDF附件但收到的邮件附件格式却不是PDF,发送邮件的技术为JAVA mail 经复现错误现象为下图:

    163邮箱:

    QQ邮箱:

    eml问题排查思路:

    1.首先,排除附件本身的问题,附件本身在执行发送邮件之前进行本地服务器文件落地,确认落地的文件确实为PDF格式且附件正常可用。

    2.其次,排查公司用的邮件服务器问题是不是对PDF文件进行了某种转码,经验证通过从邮件服务器手动发送邮件,确认收到后的邮件附件正常为PDF格式。

    3.最后,跟踪发送邮件的代码并在网上查询相关资料未发现任何和.eml有关的材料,通过在一篇博客中查看正确实例发现在Java mail中正文和附件使用的是一个MimeBodyPart对象,修改后示例如下:

    经测试错误原因是邮件正文和邮件附件用的MimeBodyPart对象是同一个,进而导致上述现象,解决办法为正文是一个MimeBodyPart对象,一个附件是一个MimeBodyPart对象,并将两个对象分别添加到MimeMultipart()

    中,经再次测试,问题解决。

    .bin问题解决

    我在项目中遇到的问题并不是.bin问题,不过网络上有一些关于这个的资料,在本篇帖子中做个记录。

    .bin问题的原因为附件名过长导致附件名编码异常,要做几处更改,如下:

    问题修复后样图:

    QQ邮箱

     

    163邮箱

    总结:

    在遇到上述这种debug跟不到结尾的问题往往摸不着头脑,所以 解决这种问题的思路应该使用排除法,排除掉外界环境的因素后,认真有条理的跟踪程序代码并且参考一份正确的实例进行比对,这是解决问题的最快办法,至于问题原因这个有时间可以研究,但是在工作中要做的是以最快的速度解决生产环境出现的问题,降低损失。

    在本次解决问题的过程中我参考了一篇正确示例代码,网址如下:

    https://www.cnblogs.com/h--d/p/6138900.html

  • 相关阅读:
    most-wanted-letter
    non-unique-elements
    python组建之paramiko的简介和简单使用
    Android平台使用termux,随时随地写代码
    发现生活中数学的美,然后记录下来
    别再用Microsoft Office,改为WPS或者Latex
    office2016 vol 中文版本
    Office 2016 英文版(VOL版)下载
    选择好用的生产力工具
    使用windows(win7和win10),最好用chocolatey
  • 原文地址:https://www.cnblogs.com/XH09/p/10981329.html
Copyright © 2020-2023  润新知