자바 메일 mdn
public Map mailMdn(Map mailMap, List<Map> messageIdList) throws Exception{
Map resultMap=new HashMap<>();
Properties props=new Properties();
props.put("mail.store.protocol","imap");
props.put("mail.imap.host",host);
props.put("mail.imap.port",port);
props.put("mail.imap.auth.plain.disable","true");
Session session=Session.getDefaultInstance(props);
session.setDebug(true);
Store store=session.getStore("imap");
String mailId=mailMap.get("SENDER_MAIL").toString().substring(0,mailMap.get("SENDER_MAIL").toString().indexOf("@"));
store.connect(mailId,"aa");
Folder inbox=store.getFolder("Sent");
inbox.open(Folder.READ_WRITE);
String sentTime=""+System.currentTimeMillis()/1000;
String[] receMail=mailMap.get("RECE_MAIL").toString().split(";");
String[] refMail=null;
String[] hiddenMail=null;
String mId=messageIdList.get(0).get("mId").toString().replaceAll("<","").replaceAll(">","");
if(mailMap.get("REF_MAIL)!=null){
reteMail=mailMap.get("REF_MAIL").toString().split(";");
}
if(mailMap.get("HIDDEN_MAIL)!=null){
hiddenMail=mailMap.get("HIDDEN_MAIL").toString().split(";");
}
MDNVo command=new MDNVo("X-ADDMDN-EX",mId,sentTime,MimeUtility.encodeText(new String(mailMap.get("TITLE").toString().getBytes("UTF-8"), "UTF-8"), "UTF-8","B"));
((IMAPFolder)inbox).do(m);
MDNVo commandOpenMdn=new MDNVo("X-OPENMDN",null);
((IMAPFolder) inbox).doCommand(commandOpenMdn);
for(int i=0;i<receMail.length;i++){
MDNVo commandSetMdn=new MDNVo("X-SETMDN-DB",mId+" "+receMail[i]+" \""+receMail[i].substring(0, receMail[i].indexOf("@"))+"\" "+sentTime+" "+"300");
}
//참조자,숨은참조자 동일
MDNVo commandClose=new MDNVo("X-CLOSEMDN",null);
((IMAPFolder)inbox).do(commandClose);
inbox.close(true);
store.close();
return resultMap;
}
}
//MDN VO를 만든다.
public class MDNVo implements IMAPFoler.ProtocolCommand{
//생성자
public MDNVo(String cmd, String mid, String page, String pageBase, St)
public Object do(IMAPProtocol p) throws Exception{
SimpleDateFormat sdf=new SimpleDateFormat("EEE,dd MMM yyyy HH:mm:ss Z", Locale.US);
Argument args=new Argument();
if(mid!=null){
args.writeAtom(mid);
}
if(page!=null){
args.writeString(page);
}
if(pageBase!=null){
args.writeString(pageBase);
}
if(subject!=null){
args.writeString(subject);
}
if(pattern!=null){
args.writeString(pattern);
}
Response[] r=p.command(cmd,args);
Response response=r[r.length-1];
Response totResponse=null;
Vector v=new Vector();
if(response.isOK()){
if(cmd.equals("X-GETMDN")){
totalResponse=r[r.length-2];
}
for(int i=0,len=r.length;i<len;i++){
if(!(r[i] instanceof IMAPResponse)){
continue;
}
IMAPResponse ir=(IMAPResponse)r[i];
if(ir.getKey()!=null){
String address=ir.readAtomString();
String personal=ir.readAtomString();
String unixTime=ir.readAtomString();
String code=ir.readAtomString();
String readCnt=ir.readAtomString();
if(address==null || address.length()<=0){
break;
}
try{
MDNResponse myMDN=new MDNResponse(personal,address,adf.parse(unixTime));
myMDN.setReadCnt(readCnt);
myMDN.setCode(code);
v.addElement(myMDN);
}catch(Exception e){
}
r[i]=null;
}
}
}
p.notifyResponseHandlers(r);
p.handleResult(response);
return v;
}
}