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


    这两天遇到一个问题,关于使用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.14 正睿做题笔记
    斯坦纳树
    django+uwsgi+nginx 前后端分离部署配置
    pandas 取 groupby 后每个分组的前 N 行
    使用 Java SDK 获取 MaxCompute 的表结构并写入到 Excel 中
    PPYOLO模型参数配置理解
    分子表面计算库MSMS的linux安装教程
    使用Python的seaborn画热力图heatmap以及将两个矩阵合并画热图的方法
    常见图片格式分析-bmp,png
    BUUOJ-Misc刷题笔记
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5199357.html
Copyright © 2020-2023  润新知