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]

Reply via email to