i did it...was simple!I had to declare Folder folder field in ListView Constructor... now the systems opens the mails, but the problem is it not opens non-HTML mails...How can i do the trick?
Davidoff wrote: > > 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-tp17337174p17364247.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]