java发送邮件附件乱码

出现问题的地方

MimeMessage mimeMsg;

//添加附件
BodyPart bp = new MimeBodyPart();   
FileDataSource fileds = new FileDataSource(filename[i]);
bp.setDataHandler(new DataHandler(fileds));   
//bp.setFileName(MimeUtility.encodeWord(fileds.getName()));   
bp.setFileName(MimeUtility.encodeText(fileds.getName(),"utf-8",null));//设置附件名编码

MimeMessage属于javax.mail下。

尝试修改编码后qq邮箱,gmail邮箱等并没有解决乱码问题。

修改方法

使用了org.springframework.mail。

添加maven依赖

//引入依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

邮件发送 

@Autowired
private JavaMailSender mailSender;

/**
     * 发送邮件
     * @param from 发送者
     * @param to 接收者
     * @param subject 主题
     * @param text 内容
     * @param fileMap 附件
     * @return
     */
public void send (String from, String to, String subject,String text,HashMap<String,String> fileMap) {
        try {
            MimeMessage mimeMessage = mailSender.createMimeMessage();
            MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage,true);
            mimeMessageHelper.setFrom(from);
            mimeMessageHelper.setTo(to);
            mimeMessageHelper.setSubject(subject);
            mimeMessageHelper.setText(text,true);
            for (Map.Entry<String,String> entry:fileMap.entrySet()) {
                mimeMessageHelper.addAttachment(entry.getKey(),new File(entry.getValue()));
            }
            mailSender.send(mimeMessage);
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }

 spring boot配置

注意配置文件的缩进,还有mail配置在spring下。

spring:
  mail:
    host: server mail address
    username: wei@shuang.com
    password: wei
    default-encoding: UTF-8
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true
            required: true
          ssl:
            enable: true
        display:
          sendmail: wei

配置由框架读取指定值 ,所以要注意拼写

 

 问题原因

暂时没有去查为什么javax的mail会有这个问题,或者如何去解决。有空再去翻翻。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值