使用java mail发送带附件的邮件,网页登录接收正常,foxmail接收附件为dat文件的处理

问题引入

在一次做发邮件功能时发现,邮件附件为xlsx文件,在网页登录接收邮箱时,附件正常,用foxmail或者网易邮箱大师客户端接收时,附件有问题,foxmail接收的附件为dat文件,网易邮箱大师接收的为bin文件,在网上查找的时候发现好像是因为附件名过长导致的。参考Java发送邮件Excel附件名称变为.dat文件,虽然我的附件名没超过60个字符,但是有中文,也出现了这个问题

问题解决

参考上文中的博客,需要在Spring 容器启动完成后加入下面设置:
System.setProperty("mail.mime.splitlongparameters","false");
我在系统中新建了一个类,实现了ApplicationListener<ContextRefreshedEvent>接口,代码如下:

package config;

import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;

public class SpringContextInitlized implements ApplicationListener<ContextRefreshedEvent>{

    /**   
     * <p>Title: onApplicationEvent</p>   
     * <p>Description: </p>   
     * @param arg0    
     */
    @Override
    public void onApplicationEvent(ContextRefreshedEvent event) {
    	//web系统中会初始化spring容器和servlet容器,这里给出判定,是spring容器的时候才进行设置
        if(event.getApplicationContext().getDisplayName().equals("Root WebApplicationContext")){
            System.setProperty("mail.mime.splitlongparameters","false");
        }
        
    }
}

配置这个bean:

<bean class="config.SpringContextInitlized" id="springContextInitlized"/>

然后再测试发邮件,客户端中的附件显示正常。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值