Baaaaあああああ.aaa な@かgjajd ajやねやたlthm..
Subject: Baaaa=?iso-2022-jp?B?GyRCJCIkIiQiJCIkIhsoQg==?=.aaa
=?iso-2022-jp?B?GyRCJEobKEI=?=@=?iso-2022-jp?B?GyRCJCsbKEI=?=gjajd
aj=?iso-2022-jp?B?GyRCJGQkTSRkJD8bKEI=?=lthm..
Baaaa=?iso-2022-jp?B?GyRCJCIkIiQiJCIkIhsoQg==?=.aaa な@=?iso-2022-jp?B?GyRCJCsbKEI=?=gjajd aj=?iso-2022-jp?B?GyRCJGQkTSRkJD8bKEI=?=lthm..
/**
* docomoSubjectDecoder
* DOCOMOから送信されるメールのSubject文字化けを元に戻す。
* @param String subject
* @return String newSubject
*/
public static String docomoSubjectDecoder(String nativeSubject){
//抽出用マッチングパターン
String ISO_2022_PATTERN = "\\Q=?iso-2022-jp?\\E(.*?)\\Q=?=\\E";
try{
//抽出作業
ArrayList codeList = new ArrayList();
Pattern pattern = Pattern.compile(ISO_2022_PATTERN,Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(nativeSubject);
while(matcher.find()){
codeList.add(matcher.group());
}
//抽出したものを置換
for(int i=0;inativeSubject = nativeSubject.replaceAll("\\Q"+(String)codeList.get(i)+"\\E",MimeUtility.decodeWord((String)codeList.get(i)));
}
}catch (Exception e) {
//エラー
// TODO: handle exception
}
return nativeSubject;
}
Message[] messages = folder.getMessages();
String subject = messages[i].getSubject();
String subjectAfter = docomoSubjectDecoder(messages[i].getSubject());
package jp.ds.servlet;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* HeaderMIEMIE
* @author t-morioka
*/
public class HeaderServlet extends HttpServlet {
private static Log log = LogFactory.getLog(HeaderServlet.class);
/**
* Post
*
*/
protected void doPost(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
try {
//キャッシュ
StringBuilder buf = new StringBuilder();
buf.append("--HeaderStart-----------------\n");
buf.append("--POST------------------------\n");
Enumeration headers = arg0.getHeaderNames();
ArrayList headerList = new ArrayList();
for (Enumeration e = headers ; e.hasMoreElements() ;) {
String key = (String)e.nextElement();
String value = arg0.getHeader(key);
//ヘッダー出力
buf.append(key+":"+value+"\n");
}
buf.append("\n--HeaderEnd-----------------\n");
buf.append("--DataStart-----------------\n");
BufferedReader reqReader = arg0.getReader();
String line;
while ((line = reqReader.readLine()) != null) {
buf.append(line);
buf.append("\n");
}
buf.append("\n--DataEnd-----------------\n");
//レスポンスへ返送
ServletOutputStream sOutStream = arg1.getOutputStream();
log.info(buf.toString());
sOutStream.println(buf.toString());
sOutStream.close();
} catch (Exception e) {
log.error(e);
System.out.println(e);
}
}
/**
* Get
*
*/
protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
try {
//キャッシュ
StringBuilder buf = new StringBuilder();
buf.append("--HeaderStart-----------------\n");
buf.append("--GET-------------------------\n");
Enumeration headers = arg0.getHeaderNames();
ArrayList headerList = new ArrayList();
for (Enumeration e = headers ; e.hasMoreElements() ;) {
String key = (String)e.nextElement();
String value = arg0.getHeader(key);
//ヘッダー出力
buf.append(key+":"+value+"\n");
}
//System.out.println("--------------------------------------");
buf.append("--HeaderEnd-----------------\n");
buf.append("--DataStart-----------------\n");
BufferedReader reqReader = arg0.getReader();
String line;
while ((line = reqReader.readLine()) != null) {
buf.append(line);
buf.append("\n");
}
buf.append("\n--DataEnd-----------------\n");
//レスポンスへ返送
ServletOutputStream sOutStream = arg1.getOutputStream();
//HTMLのURLを変換(たんなるリプレイス)作りこみ必要
log.info(buf.toString());
sOutStream.println(buf.toString());
sOutStream.close();
} catch (Exception e) {
log.error(e);
System.out.println(e);
}
}
}