java - Javamail reply removing or modifying message-id header -


i want modify or remove "message-id" header when replying email javamail. after research found out need create custom class extends mimemessage. here class have created.

import javax.mail.messagingexception; import javax.mail.session; import javax.mail.internet.mimemessage;  class mymessage extends mimemessage {      public mymessage(session session)     {         super(session);     }      @override     protected void updatemessageid() throws messagingexception {         removeheader("message-id");     }  } 

the code below related fetching messages

public list<emailsenderinfo> checkemail() throws exception {     string host = "host";     string username = "myusername";     string password = "mypass";      list<emailsenderinfo> emailsenderlist = new arraylist<emailsenderinfo>();      properties properties = system.getproperties();     properties.setproperty("mail.store.protocol", "imaps");     session session = session.getdefaultinstance(properties);      store store = session.getstore("imaps");     store.connect(host, username, password);      /*      * folder[] f = store.getdefaultfolder().list(); (folder fd : f)      * system.out.println(">> " + fd.getname());      */     folder folder = store.getfolder("inbox");      if (!folder.exists())     {         system.out.println("no inbox...");         system.exit(0);     }     folder.open(folder.read_write);     message[] msg = folder.getmessages();      if (msg.length < 1)     {         system.out.println("no new messages!");         throw new exception("no new messages!");     }      (int = 0; < msg.length; i++)     {         if (!msg[i].isset(flag.seen))         {             emailsenderinfo emailsenderinfo = new emailsenderinfo();             emailsenderinfo.message = msg[i];             system.out.println("------------ message " + (i + 1) + " ------------");              // string = internetaddress.tostring(msg[i].getfrom());             address[] fromarray = msg[i].getfrom();             internetaddress frominternetaddress = (internetaddress) fromarray[0];             string = frominternetaddress.getaddress();             string fromname = frominternetaddress.getpersonal();              if (fromname != null)             {                 emailsenderinfo.fromname = fromname;             }              if (from != null)             {                 // system.out.println("from: " + from);                 emailsenderinfo.from = from;             }              // string replyto = internetaddress.tostring(msg[i].getreplyto());             address[] replytoarray = msg[i].getfrom();             internetaddress replytointernetaddress = (internetaddress) replytoarray[0];             string replyto = replytointernetaddress.getaddress();             string replytoname = replytointernetaddress.getpersonal();              if (replyto != null)             {                 // system.out.println("reply-to: " + replyto);                 emailsenderinfo.replyto = replyto;             }              if (replytoname != null)             {                 // system.out.println("reply-to: " + replyto);                 emailsenderinfo.replytoname = replytoname;             }              string = internetaddress.tostring(msg[i].getrecipients(message.recipienttype.to));             if (to != null)             {                 // system.out.println("to: " + to);                 emailsenderinfo.to = to;             }              string subject = msg[i].getsubject();             if (subject != null)             {                 // system.out.println("subject: " + subject);                 emailsenderinfo.subject = subject;             }              date sentdate = msg[i].getsentdate();             if (sentdate != null)             {                 system.out.println("sent: " + sentdate);                 emailsenderinfo.sentdate = sentdate;             }              string bodyhtml = "";              // content             multipart multipart = (multipart) msg[i].getcontent();             (int x = 0; x < multipart.getcount(); x++)             {                  bodypart bodypart = multipart.getbodypart(x);                  string disposition = bodypart.getdisposition();                  if (part.attachment.equalsignorecase(bodypart.getdisposition()))                 {                     // dealing attachments                     system.out.println("mail has attachment : ");                     datahandler handler = bodypart.getdatahandler();                     system.out.println("file name : " + handler.getname());                     system.out.println("ddddd: " + bodypart.getcontent().tostring());                 }                 else                 {                     string classtype = bodypart.getcontent().getclass().tostring();                      if (classtype.contains("java.lang.string"))                     {                         bodyhtml = bodypart.getcontent().tostring();                     }                     else if (classtype.contains("javax.mail.internet.mimemultipart"))                     {                         mimemultipart bodycontent = (mimemultipart) bodypart.getcontent();                         (int b = 0; b < bodycontent.getcount(); b++)                         {                             imapbodypart imapbody = (imapbodypart) bodycontent.getbodypart(b);                             system.out.println("1: " + imapbody.getcontent());                             bodyhtml = imapbody.getcontent().tostring();                             // system.out.println("2: " + bodycontent.getbodypart(b));                             // system.out.println("3: " + bodypart.getcontent().tostring());                         }                     }                 }                 emailsenderinfo.bodyhtml = bodyhtml;             }               mymessage reply = (mymessage) msg[i].reply(false);             emailsenderinfo.reply = reply;             // reply.setfrom(msg[i].getfrom()[0]);             mimemessage orig = (mimemessage) msg[i];             stringbuffer buffer = new stringbuffer("thanks\n\n");             if (orig.ismimetype("text/plain"))             {                 string content = (string) orig.getcontent();                 stringreader contentreader = new stringreader(content);                 bufferedreader br = new bufferedreader(contentreader);                 string contentline;                 while ((contentline = br.readline()) != null)                 {                     buffer.append("> ");                     buffer.append(contentline);                     buffer.append("\r\n");                 }             }             // set reply content             // reply.settext(buffer.tostring());             // emailsenderinfo.reply = reply;              emailsenderlist.add(emailsenderinfo);             // system.out.println();         }// end if unread     }     folder.close(true);     store.close();      return emailsenderlist; } 

i have 2 methods in program. 1 of them checks mail , 1 replies emails.

message reply = msg[i].reply(false); 

"reply" gets passed method along other parameters.

public void sendreply(string from, string replyto, message reply, string messagereply, boolean attachment) throws exception {     string host = "myhost";     string username = "myusername";     string pass = "mypassword";     properties props = system.getproperties();     props.put("mail.smtp.starttls.enable", "true"); // added line     props.put("mail.smtp.host", host);     props.put("mail.smtp.user", username);     props.put("mail.smtp.password", pass);     props.put("mail.smtp.port", "587");     props.put("mail.smtp.auth", "true");      session session = session.getdefaultinstance(props);      mimemessage mimereply = (mimemessage) reply;     mimereply.setfrom((address) internetaddress.parse(from)[0]);              bodypart messagebodypart = new mimebodypart();     messagebodypart.setcontent(messagereply, "text/html");      multipart multipart = new mimemultipart();     // set text message part     multipart.addbodypart(messagebodypart);      if (attachment)     {         messagebodypart = new mimebodypart();         string filename = "test.jpg";         datasource source = new filedatasource(filename);         messagebodypart.setdatahandler(new datahandler(source));         messagebodypart.setfilename(filename);         multipart.addbodypart(messagebodypart);     }      mimereply.setcontent(multipart);      transport transport = session.gettransport("smtp");     transport.connect(host, username, pass);     transport.sendmessage(mimereply, internetaddress.parse(replyto));     transport.close();     system.out.println("message sent!"); } 

i have use mymessage class in order remove "message-id" header. have tried following

mymessage mimereply = (mymessage) reply; 

but following error in runtime

java.lang.classcastexception: javax.mail.internet.mimemessage cannot cast javamailer.mymessage 

how can use "mymessage" class can remove "message-id" header reply message?

you can try following:

when replying email:

when create message create, right should like:

mimemessage msg = new mimemessage(session); 

change to,

mymessage msg = new mymessage(session); 

when checking email don't need remove header message in mailbox, think need when replying mail @ instance name mail instantiate :

 mymessage msg = new mymessage(session);  msg.updatemessageid(); 

since using reference existing message:

you can like:

create new constructor:

public mymessage (mimemessage message) {      super(message); } 

when replying:

 mymessage mimereply = new mymessage(reply);  mimereply.updatemessageid(); 

then send mimereply not reply.


Comments

Popular posts from this blog

.htaccess - First slash is removed after domain when entering a webpage in the browser -

Automatically create pages in phpfox -

c# - Farseer ContactListener is not working -