i resolved that problem...i put a label instead of MultiLineLabel...thanks. Now i want optimize the opening of the email.
MailAccount.java package ajaxubimail.index; import java.io.IOException; import java.util.Arrays; import java.util.List; import java.util.Properties; import javax.mail.Address; import javax.mail.Folder; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Store; import javax.mail.internet.InternetAddress; import org.apache.commons.lang.RandomStringUtils; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.AjaxSelfUpdatingTimerBehavior; import org.apache.wicket.ajax.markup.html.AjaxLink; import org.apache.wicket.behavior.AttributeAppender; import org.apache.wicket.extensions.ajax.markup.html.AjaxLazyLoadPanel; import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow; import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.list.ListItem; import org.apache.wicket.markup.html.list.ListView; import org.apache.wicket.markup.repeater.Item; import org.apache.wicket.markup.repeater.data.IDataProvider; import org.apache.wicket.model.IModel; import org.apache.wicket.model.LoadableDetachableModel; import org.apache.wicket.model.Model; import org.apache.wicket.util.time.Duration; import UbiMail.Manager; import UbiMail.User; public class MailAccount extends WebPage { private ModalWindow modal; private Message msg; private int index; public MailAccount(String username, String password) throws MessagingException, IOException { Manager manager=new Manager("AjaxUbiMailDB",1000); User user=manager.authenticate(username, password); add(new Label("message","Hello " + user.firstName() +" "+ user.lastName())); Properties sysProperties = System.getProperties(); Session session=Session.getDefaultInstance(sysProperties, null); session.setDebug(false); /* Store store = session.getStore("pop3"); if (user.popServer()=="in.virgilio.it") store.connect(user.popServer(), user.popUser() + "@virgilio.it", user.popPass()); else store.connect(user.popServer(), user.popUser(), user.popPass()); final Folder folder = store.getFolder("INBOX"); folder.open(Folder.READ_ONLY); add(new Label("contains","Your MailBox contains "+ folder.getMessageCount())); Message[] messages = folder.getMessages(); */ Folder folder=user.openPopServer(); Message[] messages= folder.getMessages(); List<Message> test=Arrays.asList(messages); modal = new ModalWindow("modal"); ListView listTable=new ListView("listview",test) { /** * */ private static final long serialVersionUID = 1L; public void populateItem(ListItem item) { try { // if (!folder.isOpen()) // folder.open(Folder.READ_ONLY); final Message msg=(Message) item.getModelObject(); Address[] add=msg.getFrom(); index=msg.getMessageNumber(); AjaxLink rate = new AjaxLink("mess") { /** * */ private static final long serialVersionUID = 1L; public void onClick(AjaxRequestTarget target) { try { GetMessage getMessage; getMessage = new GetMessage(modal.getContentId(), msg, index){ /** * */ private static final long serialVersionUID = 1L;}; modal.setContent(getMessage); modal.show(target); } catch (MessagingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }; rate.add(new Label("prova",String.valueOf(msg.getMessageNumber()))); item.add(rate); item.add(new AttributeAppender("class", true, new Model(index % 2 ==0 ? "odd": "even"), " ")); // item.add(new Label("number",String.valueOf(msg.getMessageNumber()))); item.add(new Label("subject", msg.getSubject().toString())); item.add(new Label("from", add[0].toString())); if (msg.getSentDate()!=null) item.add(new Label("date", msg.getSentDate().toString())); else item.add(new Label("date", "Nothing")); } catch (MessagingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }; add(modal); add(listTable); user.closePopServer(); //folder.close(false); } With this code wicket says : WicketMessage: Error attaching this container for rendering: [Page class = ajaxubimail.index.MailAccount, id = 7, version = 0]Root cause:java.lang.IllegalStateException: Folder is not Open at com.sun.mail.pop3.POP3Folder.checkOpen(POP3Folder.java:422) at com.sun.mail.pop3.POP3Folder.getProtocol(POP3Folder.java:449) at com.sun.mail.pop3.POP3Message.loadHeaders(POP3Message.java:430) at com.sun.mail.pop3.POP3Message.getHeader(POP3Message.java:255) at javax.mail.internet.MimeMessage.getAddressHeader(MimeMessage.java:657) at javax.mail.internet.MimeMessage.getFrom(MimeMessage.java:321) at ajaxubimail.index.MailAccount$1.populateItem(MailAccount.java:85) at org.apache.wicket.markup.html.list.ListView.onPopulate(ListView.java:573) at org.apache.wicket.markup.repeater.AbstractRepeater.onBeforeRender(AbstractRepeater.java:127) at org.apache.wicket.Component.internalBeforeRender(Component.java:1002) at org.apache.wicket.Component.beforeRender(Component.java:1034) at org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1589) at org.apache.wicket.Component.onBeforeRender(Component.java:3681) at org.apache.wicket.Page.onBeforeRender(Page.java:1416) at org.apache.wicket.Component.internalBeforeRender(Component.java:1002) at org.apache.wicket.Component.beforeRender(Component.java:1034) at org.apache.wicket.Component.prepareForRender(Component.java:2158) at org.apache.wicket.Page.renderPage(Page.java:885) at org.apache.wicket.protocol.http.WebRequestCycle.redirectTo(WebRequestCycle.java:163) at org.apache.wicket.request.target.component.PageRequestTarget.respond(PageRequestTarget.java:58) at org.apache.wicket.request.AbstractRequestCycleProcessor.respond(AbstractRequestCycleProcessor.java:104) at org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1172) at org.apache.wicket.RequestCycle.step(RequestCycle.java:1243) at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1331) at org.apache.wicket.RequestCycle.request(RequestCycle.java:493) at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:363) at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:194) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:619)Complete stack:org.apache.wicket.WicketRuntimeException: Error attaching this container for rendering: [Page class = ajaxubimail.index.MailAccount, id = 7, version = 0] at org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1601) at org.apache.wicket.Component.onBeforeRender(Component.java:3681) at org.apache.wicket.Page.onBeforeRender(Page.java:1416) at org.apache.wicket.Component.internalBeforeRender(Component.java:1002) at org.apache.wicket.Component.beforeRender(Component.java:1034) at org.apache.wicket.Component.prepareForRender(Component.java:2158) at org.apache.wicket.Page.renderPage(Page.java:885) at org.apache.wicket.protocol.http.WebRequestCycle.redirectTo(WebRequestCycle.java:163) at org.apache.wicket.request.target.component.PageRequestTarget.respond(PageRequestTarget.java:58) at org.apache.wicket.request.AbstractRequestCycleProcessor.respond(AbstractRequestCycleProcessor.java:104) at org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1172) at org.apache.wicket.RequestCycle.step(RequestCycle.java:1243) at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1331) at org.apache.wicket.RequestCycle.request(RequestCycle.java:493) at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:363) I've partially resolved the question putting in the ListView constructor the lines if (!folder.isOpen) folder.open(Folder.READ_ONLY); but the system is really slow to download all emails because opens and closes folder for each message in it How can i simplify this? Excuse me for my poor English... :) jwcarman wrote: > > How are you spitting out the contents of the mail? Are you using a > stream of some sort? Are you forgetting to flush/close the stream? > > On Tue, May 20, 2008 at 6:45 AM, Davidoff <[EMAIL PROTECTED]> wrote: >> >> wonderful...the problem now is that some mail do not render >> completely...i >> don't see any tags now, i see the rendered mail, but some mails are half >> rendered, maybe a part of these contain text/plain? >> >> Michael Sparer wrote: >>> >>> i mean label.setEscapeModelStrings(false) ;-) >>> >>> Michael Sparer wrote: >>>> >>>> try label.setEscapeModelStrings(true) >>>> >>>> >>>> Davidoff wrote: >>>>> >>>>> I'm developing a simple webmail application...i want to render in HTML >>>>> what is in a MIME multipart message...now here is the code: >>>>> >>>>> GetMessage.java >>>>> >>>>> public abstract class GetMessage extends Panel { >>>>> private MultiLineLabel text; >>>>> private String type; >>>>> >>>>> public GetMessage(String id,Message msg,int index) throws >>>>> MessagingException, IOException { >>>>> super(id); >>>>> add(new Label("num",String.valueOf(index))); >>>>> add(new Label("sub",msg.getSubject().toString())); >>>>> add(new Label("sender",msg.getFrom()[0].toString())); >>>>> add(new Label("dat",msg.getSentDate().toString())); >>>>> >>>>> Object content = msg.getContent(); >>>>> >>>>> if( content instanceof String){ >>>>> text=new MultiLineLabel("content",content.toString()); >>>>> >>>>> >>>>> }else{ >>>>> Multipart multi = (Multipart)content; >>>>> for(int j=0; j<multi.getCount(); ++j){ >>>>> BodyPart part = multi.getBodyPart(j); >>>>> type = part.getContentType(); >>>>> content = part.getContent(); >>>>> if( content instanceof String){ >>>>> text=new MultiLineLabel("content", content.toString()); >>>>> } >>>>> } >>>>> } >>>>> add(text); >>>>> add(new Label("prova1",type)); >>>>> >>>>> } >>>>> } >>>>> >>>>> GetMessage.html >>>>> >>>>> <wicket:panel> >>>>> >>>>> <table> >>>>> <tr><th>#</th><td class="even" wicket:id="num"></td></tr> >>>>> <tr><th>Subject</th><td class="odd" wicket:id="sub"></td></tr> >>>>> <tr><th>Sender</th><td class="even" wicket:id="sender"></td></tr> >>>>> <tr><th>Date</th><td class="odd" wicket:id="dat"></td></tr> >>>>> <tr><td colspan=2><div wicket:id="content"></div></td></tr> >>>>> </table> >>>>> >>>>> LAbel >>>>> </wicket:panel> >>>>> >>>>> >>>>> The problem is the MultiLineLabel shows not the HTML resulting >>>>> rendering, but the HTML code itself! >>>>> My target is to render the html code that is in the content.toString() >>>>> >>>> >>>> >>> >>> >> >> -- >> View this message in context: >> http://www.nabble.com/Html-mail-representation-tp17337174p17337580.html >> Sent from the Wicket - User mailing list archive at Nabble.com. >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > -- View this message in context: http://www.nabble.com/Html-mail-representation-tp17337174p17364137.html Sent from the Wicket - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]