您好我正在使用Java mail Api从邮箱中读取emil。 对于电子邮件,“来自地址”包含中文字符,如下所示
(krishna 国际快 <12139@ty.com> ).
阅读完电子邮件后,当我使用message.getFromAddress();
从邮件地址获取时
来自地址的内容如下所示
?utf-8?Q?Kris=EF=BC=88=E4=BF=9E=E7=94=9F=EF=BC=89?= <12139@ty.com>
如何从地址获取原件。
答案 0 :(得分:0)
从邮箱中读取电子邮件时的电子邮件地址编码问题已修复。
StringBuffer sbFrom =null;
sbFrom = new StringBuffer();
Address[] in = msg.getFrom();
for (Address address : in) {
System.out.println("FROM: " + address.toString());
sbFrom.append(address.toString());
}
我为此创建了两个解决方案。请在下面找到它们。
解决方案1:
创建正则表达式并检查正则表达式,如果电子邮件地址与正则表达式匹配,则我们解码电子邮件地址。
请检查以下代码。
String ENCODED_PART_REGEX_PATTERN="=\\?([^?]+)\\?([^?]+)\\?([^?]+)\\?=";
Pattern pattern=Pattern.compile(ENCODED_PART_REGEX_PATTERN);
Matcher m =pattern.matcher(sbFrom.toString());
if(m.find()){
System.out.println("FROM: " +MimeUtility.decodeWord( sbFrom.toString()));
}else{
System.out.println("FROM: " + sbFrom.toString());
}
解决方案2:编写一个解码给定电子邮件地址的方法。如果我们在解码时得到javax.mail.internet.ParseException,则表示电子邮件地址没有任何编码字符,因此我们返回普通字符串。 请遵守以下方法。
public String decodeAddress(String emailId) throws UnsupportedEncodingException{
String string = "";
try{
string = MimeUtility.decodeWord(emailId);
}catch(ParseException e){
System.out.println("ParseException occured so return the same string");
string =emailId;
}
return string;
}