java 发送txt_解决java mail发送TXT附件被直接显示在正文中的问题

本文描述了使用Java Mail发送邮件时,TXT附件内容被显示在邮件正文中而不是作为附件的错误。通过调整代码,将正文设置为multipart的第一个部分,解决了在QQ邮箱和网易邮箱中显示不正常的问题。
摘要由CSDN通过智能技术生成

这两天遇到一个问题,关于使用java mail发送邮件的问题.

详细是这样子的:我使用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和网易邮件上均显示正常了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值