使用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"/>

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

    原文作者:BLF2
    原文地址: https://blog.csdn.net/u013014691/article/details/97888660
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞