javaMail 发送邮件 标题过长出现乱码

本文介绍使用JavaMail发送邮件时如何解决邮件标题过长导致的乱码问题。通过将标题分段并进行Base64编码,确保任何长度的标题都能正确显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

javamMail 实现的方式请见:http://blog.youkuaiyun.com/linlinv3/article/details/9251119


这里主要是为大家讲解的标题或者附件名称过长出现乱码的解决方法:


在发送邮件的时候 如果标题过长,则会出现乱码

解决方法是

将传入的标题分段进行转码


例如

传入的String zt(很长很长的一个String)

这时候 可以吧这个字符串进行截取

 if(zt.length()>12){
		    	 
		    	 for(int i = 0  ; i<=Math.floor(zt.length()/12) ; i++){
		    		 String s="";
		    		 String utfS = "";
		    		
		    		 int j = (int) Math.floor( zt.length()/12);
		    		 if(i==0){
		    			  s = zt.substring(0, 12);
		    			 
		    			  utfS = new String(base64.encode(s.getBytes("UTF-8")));
		    		 }else{
		    			 if(i==j){
		    				  	s = zt.substring(12*i, zt.length());
		    			  }else{ 
		    				  s = zt.substring(12*i, 12*i+12);
		    			  }
		    			  utfS = new String(base64.encode(s.getBytes("UTF-8")));
		    		 }
		    		 sList.add(s);
		    		 ztList.add(utfS);
		    	 }
		     }



这时候可以吧所有的进行过base64.ENCONDE的数据都放入到list里面 这时候


   
		     StringBuffer st = new StringBuffer("=?UTF-8?B?");
		     for(int i = 0;i<ztList.size();i++){
		    	 st.append(ztList.get(i).toString()) ;
		     }
		     st.append("?=");
		     message.setSubject(st.toString());

把list里面的数据一个一个的循环放进去,最后放入标题,这样再长的题目也不会出现乱码了。


有其他问题的欢迎补充讨论。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值