解决java mail发送TXT附件被直接显示在正文中的问题
2016-02-18 21:33
441 查看
这两天遇到一个问题,关于使用java mail发送邮件的问题.
详细是这样子的:我使用java mail发送异常报告邮件,邮件中有一个包含异常日志的附件,和关于设备信息的邮件正文.假设日志为log后缀名,那么在我的qq邮箱中显示正常.可是假设把附件的后缀名改为txt之后,就变成把附件中的内容直接显示在邮件正文中了.而我原来设置的邮件正文则不在了.
我的代码是这样写的:
加入附件:
发送邮件:
后来我试着发给网易邮箱.发现就变成正文是空白的.可是附件却多了一个.第二个附件正是我设置在邮件正文中的内容.
各种百度,谷歌,stackoverflow后均未找到答案.后来我想,用这样的方式发邮件,是不是qq邮箱会把第一个txt附件作为正文显示.于是改动了设置邮件正文的代码例如以下,把正文设为multipart的第一个:
详细是这样子的:我使用java mail发送异常报告邮件,邮件中有一个包含异常日志的附件,和关于设备信息的邮件正文.假设日志为log后缀名,那么在我的qq邮箱中显示正常.可是假设把附件的后缀名改为txt之后,就变成把附件中的内容直接显示在邮件正文中了.而我原来设置的邮件正文则不在了.
我的代码是这样写的:
加入附件:
public void addAttachment(String filePath, String fileName) throws Exception { BodyPart messageBodyPart = new MimeBodyPart(); ((MimeBodyPart)messageBodyPart).attachFile(filePath); multipart.addBodyPart(messageBodyPart); }
发送邮件:
public boolean send() throws MessagingException { if (!user.equals("") && !pass.equals("") && !to.equals("") && !from.equals("")) { Session session = Session.getDefaultInstance(props, this); Log.d("SendUtil", host + "..." + port + ".." + user + "..." + pass); MimeMessage msg = new MimeMessage(session); msg.setFrom(new InternetAddress(from)); InternetAddress addressTo = new InternetAddress(to); msg.setRecipient(MimeMessage.RecipientType.TO, addressTo); msg.setSubject(subject); msg.setSentDate(new Date()); // setup message body BodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart.setText(body); multipart.addBodyPart(messageBodyPart); // Put parts in message msg.setContent(multipart); // send email Transport.send(msg); return true; } else { return false; } }
后来我试着发给网易邮箱.发现就变成正文是空白的.可是附件却多了一个.第二个附件正是我设置在邮件正文中的内容.
各种百度,谷歌,stackoverflow后均未找到答案.后来我想,用这样的方式发邮件,是不是qq邮箱会把第一个txt附件作为正文显示.于是改动了设置邮件正文的代码例如以下,把正文设为multipart的第一个:
// setup message body BodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart.setText(body); multipart.addBodyPart(messageBodyPart, 0);再发送邮件測试,结果在qq和网易邮件上均显示正常了.
相关文章推荐
- JDK,JRE,JVM区别与联系
- JAVA学习记录 -- 线程Ⅰ
- Java工程师成神之路
- 2015年阿里巴巴中间件比赛rpc框架
- KeeCMS框架
- JDBC(Java DataBase Connectivity)连接到MySQL
- Java学习笔记2016.2.18 接口续、单例模式
- SpringMVC中在web.xml中添加中文过滤器的写法
- java5中原子型操作类的应用
- Java线程池应用
- 【笔记】java获取文件扩展名
- Java三大特性——继承,封装和多态
- eclipse 安装activiti 插件
- java中的多线程
- Java基础笔记 – 线程同步问题(转)
- Servlet基本概念
- Java基本数据类型
- Java 线程停止
- eclipse 相关
- java数据类型与运算符