So you want to store a MimeMessage instance in the Mailbox ? You could use the MimeMessageInputStream class for this:
http://svn.apache.org/viewvc/james/server/trunk/core/src/main/java/org/apache/james/core/MimeMessageInputStream.java?view=markup Bye, Norman 2011/1/21 Luc Saulière <luc.sauli...@gmail.com>: > It worked, that was a weird eclipse behaviour... > You are very helpful, may I bother you one more time? maybe the last... > maybe not :) > > Now I can easily store my messages in the db, ok, but the source of my > messages is an inputStream. > I don't know how to make an Inputstream from a mail message (as javax.Mail, > MimeMessage or Message...) cause each try I made gave me a "bad header > message...". > I see in James code the MessageResultImpl class which looks like a Message > def but with Content type instead of MimeMessage... > I will try to parse every ppty of the message and make a new MessageResult > and find a way to extract the damned InputStream I need... > > Thx > > > > 2011/1/21 Norman Maurer <nor...@apache.org> > >> Maybe some nice classpath problem with eclipse or something like >> that.. maybe just rename your beans config to something else and use >> it in the Main class. Just to be sure it not use the wrong one.. >> >> Bye, >> Norman >> >> >> 2011/1/21 Luc Saulière <luc.sauli...@gmail.com>: >> > Thx, it works perfectly with only only 7 beans. >> > Just one weird thing, in my J3M2 project which worked perfectly >> yesterday, I >> > have now a XmlBeanDefinitionStoreException, which specify the >> > spring-beans.xml line number 1770!!?! >> > weird, isn't it? >> > >> > 2011/1/20 Norman Maurer <nor...@apache.org> >> > >> >> Hi there, >> >> >> >> exactly. In fact you will prolly only need to instance the needed >> >> MailboxManager/SubscriptionManager/Authenticator implementation you >> >> want to use in your code or just wire these implementations via >> >> spring. Everything else should not be needed. >> >> >> >> Bye, >> >> Norman >> >> >> >> >> >> 2011/1/20 Luc Saulière <luc.sauli...@gmail.com>: >> >> > Ok it works, I didnt know how to inject beans in my main class... >> >> > It loads all the james app before sending one mail to the bdd, but it >> >> works >> >> > :) In fact I hacked all the spring-bean.xml (from J3M2) without >> deleting >> >> any >> >> > bean... I just have to select those I need. >> >> > >> >> > Thanks for your help, >> >> > Luc >> >> > >> >> > 2011/1/20 Eric Charles <e...@apache.org> >> >> > >> >> >> Hi, >> >> >> >> >> >> Yes, direct injection does not work in main class because it is not >> >> fetched >> >> >> from spring context. >> >> >> >> >> >> 1. you can create a bean and move the @Resource within, define the >> bean >> >> in >> >> >> spring xml context, spring should inject the mailboxmanager in your >> >> bean. >> >> >> You can get your bean with context.getBean("mybean") in main class. >> >> >> >> >> >> 2. or simply call from the main class >> context.getBean("mailboxmanager"), >> >> it >> >> >> should give you the mailboxmanager,... but it seems you had an >> exception >> >> (if >> >> >> such, could you provide the stack trace ?). >> >> >> >> >> >> Tks, >> >> >> >> >> >> Eric >> >> >> >> >> >> >> >> >> >> >> >> On 20/01/2011 15:42, Luc Saulière wrote: >> >> >> >> >> >>> Hello Eric, >> >> >>> That was quite the code I tested yesterday, but I got still the same >> >> >>> exception, because the MailboxManager is not initialized (null >> pointer >> >> >>> exception). >> >> >>> I tried the @Resource annotation, I got 'null pointer' and I tried >> the >> >> >>> BeanFactory way but I got a 'bean creation exception'... >> >> >>> I think the first method is the good one, but I'm still looking >> after >> >> the >> >> >>> magic method to instantiate my MailboxManager. >> >> >>> >> >> >>> Thx, >> >> >>> Luc. >> >> >>> >> >> >>> >> >> >>> 2011/1/20 Eric Charles<e...@apache.org> >> >> >>> >> >> >>> Hi, >> >> >>>> >> >> >>>> Probably you did not instantiate spring context. >> >> >>>> >> >> >>>> As first shot, you could copy Main to YourMain >> >> >>>> >> >> >>>> >> >> >>>> >> >> >> https://svn.apache.org/repos/asf/james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/Main.java >> >> >>>> >> >> >>>> and hack it with for example with code sample in [1]. >> >> >>>> >> >> >>>> You can also hack the spring context xml files if you don't want to >> >> load >> >> >>>> all the beans, but you will still need a few of them to access the >> >> >>>> mailbox. >> >> >>>> >> >> >>>> Obviously, we could discuss the following: >> >> >>>> 1. Add some code simple samples for basic operations on mailbox. >> >> >>>> 2. Have a spring context for mailbox that could be used as a >> >> stand-alone >> >> >>>> (and also be imported in server). >> >> >>>> >> >> >>>> Tks, >> >> >>>> >> >> >>>> Eric >> >> >>>> >> >> >>>> [1] code sample (non compiling). >> >> >>>> >> >> >>>> public class YourMain { >> >> >>>> >> >> >>>> private static Log log = >> LogFactory.getLog(Main.class.getName()); >> >> >>>> >> >> >>>> @Ressource(name="mailboxmanager") >> >> >>>> private static MailboxManager; >> >> >>>> >> >> >>>> public static void main(String[] args) throws IOException { >> >> >>>> >> >> >>>> final JamesServerApplicationContext context = new >> >> >>>> JamesServerApplicationContext(new String[] { >> >> >>>> "context/james-server-context.xml" }); >> >> >>>> context.registerShutdownHook(); >> >> >>>> >> >> >>>> // Bad code practice - Refactor it!!! >> >> >>>> >> >> >>>> MailboxPath mailboxPath = MailboxPath.inbox("userName"); >> >> >>>> >> >> >>>> MailboxSession mailboxSession = >> >> >>>> mailboxManager.createSystemSession(userName30, log) >> >> >>>> mailboxManager.startProcessingRequest(mailboxSession); >> >> >>>> try { >> >> >>>> mailboxManager.createMailbox(mailboxPath, >> >> mailboxSession); >> >> >>>> } >> >> >>>> catch (MailboxExistsException e) { >> >> >>>> // Do nothing, the mailbox already exists. >> >> >>>> } >> >> >>>> >> >> >>>> mailboxManager.endProcessingRequest(mailboxSession); >> >> >>>> >> >> >>>> >> >> >>>> MessageManager messageManager = >> >> >>>> mailboxManager.getMailbox("mailboxPath", mailboxSession); >> >> >>>> >> >> >>>> // instanciate an input stream that contains your email >> content >> >> >>>> (body, header,...) >> >> >>>> >> >> >>>> messageManager.appendMessage(your-input-stream, >> >> >>>> new Date(), >> >> >>>> mailboxSession, >> >> >>>> isRecent, >> >> >>>> flags); >> >> >>>> mailboxManager.endProcessingRequest(mailboxSession); >> >> >>>> } >> >> >>>> >> >> >>>> } >> >> >>>> >> >> >>>> } >> >> >>>> >> >> >>>> >> >> >>>> >> >> >>>> On 19/01/2011 20:07, Luc Saulière wrote: >> >> >>>> >> >> >>>> Thx for answering so quickly, I tried this in a new package inside >> >> >>>>> james-server-container-spring project... >> >> >>>>> I have a public static void main(String[] args) containing my >> private >> >> >>>>> staticMailboxManager mailboxManager which >> >> >>>>> >> >> >>>>> is injected with the annotation @Resource(name="mailboxmanager") >> from >> >> >>>>> the >> >> >>>>> spring-bean.xml. >> >> >>>>> But it does not succeed in initializing the variable and I get a >> >> >>>>> NullPointerException as soon as I use it... >> >> >>>>> How can I initialize my beans without running the entire James >> app? >> >> >>>>> >> >> >>>>> Tks. >> >> >>>>> >> >> >>>>> >> >> >>>>> 2011/1/19 Eric Charles<e...@apache.org> >> >> >>>>> >> >> >>>>> Hi Luc, >> >> >>>>> >> >> >>>>>> Yes, code has changed in trunk since M2 (we don't use MailServer >> >> >>>>>> anymore). >> >> >>>>>> In M2, or in trunk, the way to store mail is the same. >> >> >>>>>> If you are deploying the your code/class in the james spring >> >> container, >> >> >>>>>> you >> >> >>>>>> need to inject the mailboxmanager (with >> >> >>>>>> @Resources(name="mailboxmanager") >> >> >>>>>> and have a block of code such as: >> >> >>>>>> >> >> >>>>>> MailboxPath mailboxPath = MailboxPath.inbox(userName30); >> >> >>>>>> MailboxSession mailboxSession = >> >> >>>>>> mailboxManager.createSystemSession(userName30, log) >> >> >>>>>> MessageManager messageManager = >> >> mailboxManager.getMailbox(mailboxPath, >> >> >>>>>> mailboxSession); >> >> >>>>>> messageManager.appendMessage(your-input-stream, >> >> >>>>>> new Date(), >> >> >>>>>> mailboxSession, >> >> >>>>>> isRecent, >> >> >>>>>> flags); >> >> >>>>>> >> mailboxManager.endProcessingRequest(mailboxSession); >> >> >>>>>> } >> >> >>>>>> >> >> >>>>>> I just realize I can't find a simple test case to in trunk to >> show >> >> this >> >> >>>>>> (or >> >> >>>>>> maybe I didn't look good). >> >> >>>>>> If we don't have this, maybe you could open a jira so we can >> further >> >> >>>>>> provide test samples. >> >> >>>>>> (this comes from the fact that all our tests were made from an >> >> "imap >> >> >>>>>> perspective", we moved the imap test to another project, but we >> >> >>>>>> probably >> >> >>>>>> should further enrich the pure mailbox test cases/samples). >> >> >>>>>> >> >> >>>>>> Tks, >> >> >>>>>> >> >> >>>>>> Eric >> >> >>>>>> >> >> >>>>>> >> >> >>>>>> >> >> >>>>>> >> >> >>>>>> On 19/01/2011 18:04, Luc Sauličre wrote: >> >> >>>>>> >> >> >>>>>> Hello, >> >> >>>>>> >> >> >>>>>>> I'm developing with Math on the same mail app. We didn't succeed >> in >> >> >>>>>>> storing >> >> >>>>>>> mail as james3 does. In fact the SieveMailet class does not have >> a >> >> >>>>>>> setUsersRepo method, I think you're dealing with a newer version >> of >> >> >>>>>>> James3... >> >> >>>>>>> We are developing with the M2 one and SieveMailet have a >> >> setMailserver >> >> >>>>>>> method instead. >> >> >>>>>>> So, is there any way to store a mail (from another IMAP >> connection >> >> for >> >> >>>>>>> instance) in the James3 mySQL db, as James3 does (i.e. filling >> >> >>>>>>> correctly >> >> >>>>>>> all >> >> >>>>>>> the appropriate tables...)? >> >> >>>>>>> >> >> >>>>>>> Thx for helping. >> >> >>>>>>> Luc. >> >> >>>>>>> >> >> >>>>>>> 2011/1/17 Eric Charles<e...@apache.org> >> >> >>>>>>> >> >> >>>>>>> Hi, >> >> >>>>>>> >> >> >>>>>>> The mails store magic occurs in LocalDelivery where the >> >> >>>>>>>> MailboxManager >> >> >>>>>>>> is >> >> >>>>>>>> injected. >> >> >>>>>>>> (more precise, LocalDelivery uses the SieveMailet initialized >> with >> >> >>>>>>>> the >> >> >>>>>>>> MailboxManager) >> >> >>>>>>>> sieveMailet.setUsersRepository(usersRepository); >> >> >>>>>>>> sieveMailet.setMailboxManager(mailboxManager); >> >> >>>>>>>> sieveMailet.init(m); >> >> >>>>>>>> sieveMailet.setQuiet(true); >> >> >>>>>>>> ... >> >> >>>>>>>> if (mail.getState() != Mail.GHOST) { >> >> >>>>>>>> sieveMailet.service(mail); >> >> >>>>>>>> } >> >> >>>>>>>> >> >> >>>>>>>> You only need to know that *MailRepository is not for users' >> mail >> >> >>>>>>>> storage >> >> >>>>>>>> http://james.apache.org/server/3/feature-persistence.html >> >> >>>>>>>> >> >> >>>>>>>> Both topics (mailet usage for delivery + separate mail stores) >> are >> >> >>>>>>>> subject >> >> >>>>>>>> to discussion will certainly change. >> >> >>>>>>>> >> >> >>>>>>>> Tks, >> >> >>>>>>>> >> >> >>>>>>>> Eric >> >> >>>>>>>> >> >> >>>>>>>> >> >> >>>>>>>> >> >> >>>>>>>> On 17/01/2011 11:43, math math wrote: >> >> >>>>>>>> >> >> >>>>>>>> Hello everybody, >> >> >>>>>>>> >> >> >>>>>>>> I am developping a web mail project using james 3M2. I'm >> trying >> >> to >> >> >>>>>>>>> store >> >> >>>>>>>>> mails in a "james3" way with an external application using >> MySql >> >> DB. >> >> >>>>>>>>> I've >> >> >>>>>>>>> tried to store mails using mysq database repositories for a >> few >> >> days >> >> >>>>>>>>> now >> >> >>>>>>>>> but >> >> >>>>>>>>> i didn't succeed to do so... I 've traced the store method of >> >> >>>>>>>>> JDBCMailRepository class and also the ToRepository one. But >> still >> >> >>>>>>>>> don't >> >> >>>>>>>>> know >> >> >>>>>>>>> how James 3 is storing mails in the DB. >> >> >>>>>>>>> >> >> >>>>>>>>> I would be very glad if someone could help me in this task. >> >> >>>>>>>>> >> >> >>>>>>>>> Thanks, >> >> >>>>>>>>> Mat >> >> >>>>>>>>> >> >> >>>>>>>>> >> >> >>>>>>>>> >> >> >>>>>>>>> >> >> --------------------------------------------------------------------- >> >> >>>>>>>>> >> >> >>>>>>>>> To unsubscribe, e-mail: >> server-dev-unsubscr...@james.apache.org >> >> >>>>>>>> For additional commands, e-mail: >> server-dev-h...@james.apache.org >> >> >>>>>>>> >> >> >>>>>>>> >> >> >>>>>>>> >> >> >>>>>>>> >> >> >>>>>>>> >> >> --------------------------------------------------------------------- >> >> >>>>>>>> >> >> >>>>>>> To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org >> >> >>>>>> For additional commands, e-mail: >> server-dev-h...@james.apache.org >> >> >>>>>> >> >> >>>>>> >> >> >>>>>> >> >> >>>>>> >> >> --------------------------------------------------------------------- >> >> >>>> To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org >> >> >>>> For additional commands, e-mail: server-dev-h...@james.apache.org >> >> >>>> >> >> >>>> >> >> >>>> >> >> >> >> >> >> --------------------------------------------------------------------- >> >> >> To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org >> >> >> For additional commands, e-mail: server-dev-h...@james.apache.org >> >> >> >> >> >> >> >> > >> >> >> >> --------------------------------------------------------------------- >> >> To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org >> >> For additional commands, e-mail: server-dev-h...@james.apache.org >> >> >> >> >> > >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org >> For additional commands, e-mail: server-dev-h...@james.apache.org >> >> > --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org