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]