近期,线上项目发出邮件是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

转载于:https://www.cnblogs.com/XH09/p/10981329.html

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

  1. Java GUI编程:swing实现上传tiff文件至hdfs功能

    上传tiff文件至hdfs pom <?xml version="1.0" encoding="UTF-8"?> <project xmlns ...

  2. java文件客户端下载_使用Java写一个minio的客户端上传下载文件

    标签:color   ati   tty   java   system   wired   format   media   param 前言: 确保已经安装了minio的服务端 代码: pom.x ...

  3. webflow ajax,java开发之spring webflow实现上传单个文件及多个文件功能实例

    本文实例讲述了java开发之spring webflow实现上传单个文件及多个文件功能.分享给大家供大家参考,具体如下: 上传单个文件 准备 1. 如果你项目中使用了spring security的话 ...

  4. Java在hdfs上创建新文件夹遇错误:Permission denied: user=atguigu, access=READ_EXECUTE, inode=“/tmp“:root:supe

    在IDEA里编写测试代码用于在HDFS上创建新文件夹遇到以下错误: Permission denied: user=atguigu, access=READ_EXECUTE, inode=" ...

  5. 使用cmd命令在桌面上新建一个文件夹,且在文件夹中新建一个.java文件,使用cmd命令实现.java文件的编译运行

    标题使用cmd命令在桌面上新建一个文件夹,且在文件夹中新建一个.java文件,使用cmd命令实现.java文件的编译运行 1.在电脑桌面使用快捷键win+r打开 2.打开cmd命令界面之后使用md d ...

  6. 电脑上的计算机可以加密码,电脑上怎么给文件夹设置密码

    有些重要的文件或比较隐私的文件存放在电脑上,这些文件我们只希望自己能看到并使用,不希望别人访问.那么,最好的办法就是去对这些文件进行加密.那么电脑上怎么给文件夹设置密码呢?下面和佰佰安全网了解下吧. ...

  7. 弹性服务器怎么上传文件,上传哪个文件夹弹性云服务器

    上传哪个文件夹弹性云服务器 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. 本节 ...

  8. 服务器怎么打开本地电脑文件夹,如何在云服务器上打开本地文件夹

    如何在云服务器上打开本地文件夹 内容精选 换一换 Tomcat是一个被广泛使用的Java Web应用服务器.本文介绍了在华为云弹性云服务器上部署Java Web环境的操作步骤.首先需要下载部署Java ...

  9. web上传整个文件夹

    在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 先说下要求: PC端全平台支持,要求支持Windows,Mac,Linux 支持所 ...

最新文章

  1. 【转载】CSS 入门精要(一)
  2. Java高并发编程(十):Java并发工具类
  3. Java 设计模式——状态模式
  4. cnpm在ubuntu19.10下面的安装以及vue.js中el的意思
  5. 解读ASP.NET 5 MVC6系列(10):Controller与Action
  6. Struts2中EL表达式的取值范围问题
  7. 【转载】java中Date与String的相互转化
  8. 算法分析与设计「一」枚举
  9. 深圳电子地图 深圳高清电子地图 来自谷歌电子地图 最高19级地图
  10. mysql typedefinition_深入浅出Mysql——基础篇
  11. Android Bitmap(位图)详解
  12. php下的ssm模式,编码风格:Mvc模式下SSM环境,代码分层管理
  13. mysql io 100_MySQL服务器 IO 100%的案例分析
  14. 【转】C#使用GDI+制作背景颜色淡入淡出效果的按钮
  15. 【JCC技术】JCC功能演示
  16. 全民学霸服务器在维护中需要多久,《全民学霸》学生系统详解,成就学霸之路...
  17. Fallback class must implement the interface annotated by @FeignClient
  18. pboot 将编码转换为实体html_java转换 HTML字符实体,java特殊字符转义字符串
  19. 函数编程之Function
  20. java迷你DVD管理器

热门文章

  1. 嵌入式闪存您了解多少?听听专家怎么说!
  2. Spring和Spring MVC包扫描
  3. Servlet - HTTP超文本传输协议
  4. postgresql创建只读账号
  5. 《企业软件交付:敏捷与高效管理精要》——1.5 对企业软件交付的需求是如何演变的呢...
  6. PHP之路——MySql查询语句
  7. Creating Lists
  8. 源代码解读Cas实现单点登出(single sign out)功能实现原理
  9. 别总埋汰写代码,停下总结一下吧
  10. 流水账之都市:我是一个客居者