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]