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

Reply via email to