I agree. I would try to recreate something like the current
mailsender.sendHtmlMessage(...) and sendTextMessage(...) from the
components we would develop.

Thomas

On Thu, Dec 20, 2012 at 3:48 PM, Ludovic Dubost <[email protected]> wrote:

> Hi,
>
> While it's great to have a object oriented API to compose a complex email,
> I believe for velocity and a set  of simple use cases it's also good to
> have at least in the scripting API some simple direct APIs like we have in
> the current mailsender. It reduces the number of lines written for simple
> text or html email
>
> Ludovic
>
>
> 2012/12/20 Jeremie BOUSQUET <[email protected]>
>
> > I even think there could be 3 modules for this :) And a unique script
> > service for "pure" mails manipulation...
> > Depends on what level of API is wanted.
> >
> > Considering what I started and what I would find nice as a target,
> possible
> > use-case would look like the following:
> >
> > {{velocity}}
> >
> > ## Sending a mail
> >
> > #set($mail = $services.mail.newMail("sender", "from", "to", "cc",
> > "subject"))
> > $mail.addText("bla bla bla")
> > $mail.addHtml("<html/>")
> > $mail.addCalendar($services.mail.newCalendar("begin date", "end date",
> > "subject", ...))
> > $mail.addContent("content type", "content")
> >
> > $mail.send()
> > ## or
> > $mail.send(host, port, protocol, ...)
> > ## or
> > $services.mail.send($mail, host, port, protocol...)
> >
> > ## Reading a mail
> >
> > #set($mails = $services.mail.fetch(host, port, protocol, ...))
> > #set($mail = $mails[0])
> > $mail.from, $mail.to, $mail.cc, $mail.text, $mail.html ...
> >
> > ## Resending / Replying
> >
> > #set($mails = $services.mail.fetch(host, port, protocol, ...))
> > #set($mail = $mails[0])
> > #set($newMail = $services.mail.newReply($mail)) ## from --> to, etc.
> >
> > $newMail.send()
> > ## or
> > $newMail.send(host, port, protocol, ...)
> > ## or
> > $services.mail.send($newMail, host, port, protocol, ...)
> >
> > {{/velocity}}
> >
> > In that case there would be as components something like :
> > mail-commons-api, mail-sender-api, mail-reader-api.
> > If script services are distinct, the above would be replaced by:
> > $services.mail.newMail(...)
> > $services.mail.newReply(...)
> > $services.mailSender.send(...)
> > $services.mailReader.fetch(...) (or read() of course)
> > ... but I'm not sure it really adds value to differentiate.
> > The inner javamail "Message" would never be publicly exposed, while
> > authorizing easy manipulations.
> >
> > For now what I wrote is a mixed-bag of what is above, and only for
> reading.
> > But I really believe that:
> > - there's an added value to "materialize" a mail in specific object(s)
> > (MailItem.java and MailContent.java in my work in progress components,
> with
> > "internal" headers stripped) instead of creating/extending a flat API
> with
> > numerous parameters
> > - those objects should be shared between the sender and the reader
> > components
> >
> > For now my current API is more:
> > Message fetch(host, port, protocol, ...)
> > MailItem parseHeaders(Message message)
> > MailContent parseContent(Message message)
> > ... because it's usually a good thing to lazily load message body parts.
> >
> > WDYT ?
> >
> > BR,
> > Jeremie
> >
> >
> >
> > 2012/12/20 Vincent Massol <[email protected]>
> >
> > >
> > > On Dec 20, 2012, at 1:35 PM, Thomas Mortagne <
> [email protected]>
> > > wrote:
> > >
> > > > On Thu, Dec 20, 2012 at 12:55 PM, Thomas Delafosse <
> > > > [email protected]> wrote:
> > > >
> > > >> Hi all,
> > > >>
> > > >> I would be happy to work on the mailSender plugin.
> > > >> I propose to make it a component and add it a few functionalities.
> > > Namely,
> > > >> I was thinking about adding an API like:
> > > >> public int sendMultiContentMessage  (String from, String to, String
> > cc,
> > > >> String bcc, String subject, String[] contents, List<Attachment>
> > > >> attachments)  (1)
> > > >> where contents would be a string array containing all the contents
> to
> > be
> > > >> embed in the mail (text, html but also a vCalendar for example)
> along
> > > with
> > > >> their MIME type.
> > > >> So for example, if you want to send a mail containing some html part
> > > and a
> > > >> vCalendar, "contents" would look something like :
> > > >> contents = ['text/html', Your Html code, 'text/calendar', Your
> > > vCalendar] .
> > > >>
> > > >> Another way to achieve this would be to use a single String "body"
> > > instead
> > > >> of "contents", with a specific syntax indicating each part MIME
> type,
> > > thus
> > > >> allowing us to parse it. For example we could imagine having
> something
> > > like
> > > >> :
> > > >> public int sendMultiContentMessage  (String from, String to, String
> > cc,
> > > >> String bcc, String subject, String body, List<Attachment>
> attachments)
> > > with
> > > >> body = "{{html}}HTML code{{/html}} {{calendar}}Calendar
> > > code{{/calendar}}"
> > > >> (2) or even
> > > >> body = "{{mailPart type='text/html'}}HTML code{{/mailPart}}
> {{mailPart
> > > >> type="text/calendar"}}Calendar code{{/mailPart}}" (3).
> > > >> This would be easier to use ((2) most of all), but probably
> trickier,
> > > >> slower and for (2), less flexible.
> > > >>
> > > >> WDYT ? And of course, if there is anything else you would like to
> > > change in
> > > >> the mailSender, let me know !
> > > >>
> > > >
> > > > Would be nice to start from what Jeremie already started on
> > > >
> > >
> >
> https://github.com/xwiki-contrib/xwiki-application-mailarchive/tree/master/xwiki-contrib-mailsince
> > > > it's the same goal, a generic mail component API.
> > >
> > > I think it's different: one is for mail sending, the other for mail
> > > reading. I agree with Ludovic that we should have 2 modules  for this.
> > >
> > > Thanks
> > > -Vincent
> > >
> > > >> Thomas
> > > >>
> > > >> On Wed, Nov 28, 2012 at 3:01 PM, Ludovic Dubost <[email protected]>
> > > wrote:
> > > >>
> > > >>> Hi Jeremie and all,
> > > >>>
> > > >>> Note that currently mailsender is used quite a lot by standard
> XWiki
> > > >>> Enterprise features like "send page by email", "invitation",
> > > >>> "registration".
> > > >>> I agree that the mailsender code could be merged with your own
> > > component
> > > >>> that currently handles reading emails.
> > > >>>
> > > >>> Any other opinion on the mail I sent before. I'd like to publish
> the
> > > code
> > > >>> that generates vcalendar invitations because it could be used in
> many
> > > >> areas
> > > >>> but without the mailsender modifications it cannot work and
> > rewriting a
> > > >>> mail code that handles vcalendar is tough:
> > > >>>
> > > >>> So what would be the approach to add a vcalendar part in emails
> sent
> > by
> > > >> the
> > > >>> current mailsender ? Can I propose my patches that add the
> following
> > > API:
> > > >>>
> > > >>> public int sendHtmlMessage(String from, String to, String cc,
> String
> > > bcc,
> > > >>> String subject, String body,
> > > >>>        String alternative, String calendar, List<Attachment>
> > > >> attachments)
> > > >>>
> > > >>> which is derived from
> > > >>>
> > > >>> public int sendHtmlMessage(String from, String to, String cc,
> String
> > > bcc,
> > > >>> String subject, String body,
> > > >>>        String alternative,  List<Attachment> attachments)
> > > >>>
> > > >>> Note that this API should actually be:
> > > >>>
> > > >>> public int sendHtmlMessage(String from, String to, String cc,
> String
> > > bcc,
> > > >>> String subject, String html,
> > > >>>        String alternativeText, List<Attachment> attachments)
> > > >>>
> > > >>> As this is the way the fields are used since there is no way to
> > change
> > > >> the
> > > >>> content type of the emails from these APIs
> > > >>>
> > > >>> Ludovic
> > > >>>
> > > >>>
> > > >>>
> > > >>>
> > > >>>
> > > >>> 2012/11/23 Jeremie BOUSQUET <[email protected]>
> > > >>>
> > > >>>> Hi Ludovic,
> > > >>>>
> > > >>>> If I may invite myself in the discussion, I have the same
> questions
> > > >>>> concerning the mail archive app I'm writing, in which I plan to
> add
> > a
> > > >>>> "reply" feature on one side, and on the other side add management
> of
> > > >>>> vcalendar parts in incoming emails. Naturally, it would then be
> nice
> > > to
> > > >>> be
> > > >>>> able to send vcalendar as an email part (or any type of part).
> > > >>>>
> > > >>>> For now there's no "reply" feature so of course I do not use the
> > > >>> mailsender
> > > >>>> plugin. But there's the beginning of a "mail" component, for now
> > > >>> dedicated
> > > >>>> to the mail archive app, and obviously aiming at hiding javamail
> api
> > > >>>> behind, and providing facilities to parse emails headers and
> parts,
> > > and
> > > >>> why
> > > >>>> not send emails. For now it "knows" how to read and compute most
> > > emails
> > > >>>> content (text, html, headers, attachments, attached emails),
> though
> > > has
> > > >>>> same limitation (including vcalendar).
> > > >>>>
> > > >>>> Currently the api is like that, but is quite draft and unstable
> > > (mostly
> > > >>> the
> > > >>>> update/create*Page that are not even implemented, and IMO should
> be
> > > >>>> removed):
> > > >>>>
> > > >>>>
> > > >>>
> > > >>
> > >
> >
> https://github.com/xwiki-contrib/xwiki-application-mailarchive/blob/master/xwiki-contrib-mail/src/main/java/org/xwiki/contrib/mail/IMailComponent.java
> > > >>>> What's available from parsed mail body is:
> > > >>>>
> > > >>>>
> > > >>>
> > > >>
> > >
> >
> https://github.com/xwiki-contrib/xwiki-application-mailarchive/blob/master/xwiki-contrib-mail/src/main/java/org/xwiki/contrib/mail/MailContent.java
> > > >>>>
> > > >>>> Obviously, when all that reaches a final state, it would be nice
> > for a
> > > >>>> "mail" and/or "mailsender" component to be shared for xwiki and
> the
> > > >> mail
> > > >>>> archive app (and whoever wants to bother with mails) needs,
> > > >>>>
> > > >>>> That was for your information,
> > > >>>>
> > > >>>> BR,
> > > >>>> Jeremie
> > > >>>>
> > > >>>>
> > > >>>>
> > > >>>> 2012/11/23 Ludovic Dubost <[email protected]>
> > > >>>>
> > > >>>>> Hi,
> > > >>>>>
> > > >>>>> I wanted to discuss about the future of the mailsender plugin ?
> > > >>>>>
> > > >>>>> I've been working on a small tool to be able to send a Calendar
> > > >>>> Invitation
> > > >>>>> by email from a Meeting Notes AppWithinMinutes application and I
> > > >> found
> > > >>>> some
> > > >>>>> limitation in the mailsender plugin, namely you cannot add
> > multipart
> > > >>>>> alternative email parts in addition to the text and html parts
> > > >> already
> > > >>>>> supported by the plugin.
> > > >>>>>
> > > >>>>> I was able to hack the mailsender plugin to add a vcalendar part
> > but
> > > >> it
> > > >>>>> does not really sound right to do that since we should support
> any
> > > >> part
> > > >>>> of
> > > >>>>> any content type, but this is a bigger refactoring.
> > > >>>>>
> > > >>>>> I was wondering what the future is for the mailsender plugin. Do
> we
> > > >>> plan
> > > >>>> to
> > > >>>>> make it a component and keep the same functionality ? Is there a
> > plan
> > > >>> for
> > > >>>>> an alternative component ?
> > > >>>>>
> > > >>>>> And what would be the approach to add a vcalendar part in emails
> > sent
> > > >>> by
> > > >>>>> the current mailsender ? This would be needed to support the
> > feature
> > > >> of
> > > >>>>> sending invitation emails which would be very powerfull.
> > > >>>>>
> > > >>>>> Ludovic
> > > >>>>>
> > > >>>>> --
> > > _______________________________________________
> > > devs mailing list
> > > [email protected]
> > > http://lists.xwiki.org/mailman/listinfo/devs
> > >
> > _______________________________________________
> > devs mailing list
> > [email protected]
> > http://lists.xwiki.org/mailman/listinfo/devs
> >
>
>
>
> --
> Ludovic Dubost
> Founder and CEO
> Blog: http://blog.ludovic.org/
> XWiki: http://www.xwiki.com
> Skype: ldubost GTalk: ldubost
> _______________________________________________
> devs mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/devs
>
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to