zoukankan      html  css  js  c++  java
  • 解决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和网易邮件上均显示正常了.

  • 相关阅读:
    Swift5.3 语言参考(八) 模式
    Swift5.3 语言参考(七) 属性
    Swift5.3 语言参考(六) 声明
    Swift5.3 语言参考(五) 语句
    Swift5.3 语言参考(四) 表达式
    Swift5.3 语言参考(三) 类型
    Swift5.3 语言参考(一) 关于语言参考
    有效率的会议方式
    有效率的会议方式
    高中生活--第5篇--学英语的故事(四大难题)
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5199357.html
Copyright © 2011-2022 走看看