In fact standards attachments works.

But it's not what I'm trying do do.

I'm need to relay HTML messages with inline images and this is still
not working.

Is it a kind of limitation of GAE or is it supposed to work ?

Thanx for your help.

François

On 16 nov, 23:09, mably <fm2...@mably.com> wrote:
> Hi Ikai, thanx for you help.
>
> I've copy pasted your code on my webapp (webwinewatch), I've no error
> but the mail isn't correctly relayed, all attachements are removed.
>
> I've just modified the sender, from and recipient lines :
>
> message.setSender(new InternetAddress("<myaddress>@gmail.com", "Relay
> account"));
> message.setFrom(message.getSender());
> message.setRecipient(Message.RecipientType.TO, message.getSender());
>
> Do you have any clue ?
>
> You can test it, sending an email to : contact-
> t...@webwinewatch.appspotmail.com
>
> Thanx again for your help.
>
> On 16 nov, 21:35, "Ikai L (Google)" <ika...@google.com> wrote:
>
>
>
> > I couldn't reproduce your exact error, but I was able to put together a
> > working example of an inbound email handler to relay messages. I'm going to
> > expand the documentation about processing inbound emails. Here's some
> > working code:http://pastie.org/701517
>
> > Does this example help any? Code is also pasted below, but it'll be easier
> > for you to look at the Pastie.
>
> > import javax.servlet.http.HttpServlet;
> > import javax.servlet.http.HttpServletRequest;
> > import javax.servlet.http.HttpServletResponse;
> > import javax.servlet.ServletException;
> > import javax.mail.*;
> > import javax.mail.util.ByteArrayDataSource;
> > import javax.mail.internet.MimeMessage;
> > import javax.mail.internet.MimeMultipart;
> > import javax.mail.internet.MimeBodyPart;
> > import javax.mail.internet.InternetAddress;
> > import javax.activation.DataHandler;
> > import java.io.IOException;
> > import java.io.InputStream;
> > import java.util.logging.Logger;
> > import java.util.Properties;
>
> > public class MailHandlerServlet extends HttpServlet {
> >     private static final Logger log =
> > Logger.getLogger(MailHandlerServlet.class.getName());
> >     private static final String RECIPIENT = "recipi...@gmail.com";
> >     private static final String SENDER = "sen...@google.com";
>
> >     protected void doPost(HttpServletRequest request, HttpServletResponse
> > response) throws ServletException, IOException {
> >         Properties props = new Properties();
> >         Session session = Session.getDefaultInstance(props, null);
> >         try {
> >             MimeMessage message = new MimeMessage(session,
> > request.getInputStream());
>
> >             Object content = message.getContent(); // You could also
> > probably just use message.getInputStream() here
> >                                                    // and avoid the
> > conditional type check
>
> >             if (content instanceof String) {
> >                 log.info("Received a string");
> >             } else if (content instanceof InputStream) {
> >                 // My somewhat limited testing indicates that this is always
> > getting returned as an
> >                 // InputStream
>
> >                 InputStream inputStream = (InputStream) content;
> >                 ByteArrayDataSource inboundDataSource = new
> > ByteArrayDataSource(inputStream, message.getContentType());
> >                 Multipart inboundMultipart = new
> > MimeMultipart(inboundDataSource);
>
> >                 // Set the body with whatever text you want
> >                 Multipart outboundMultipart = new MimeMultipart();
> >                 MimeBodyPart messageBodyPart = new MimeBodyPart();
> >                 messageBodyPart.setText("Set your body here");
> >                 outboundMultipart.addBodyPart(messageBodyPart);
>
> >                 // Loop over the multipart message coming in and
> >                 // append them to the outbound Multipart object
> >                 for (int i = 0; i < inboundMultipart.getCount(); i++) {
> >                     BodyPart part = inboundMultipart.getBodyPart(i);
> >                     /*
> >                         The content-disposition header is optional:
> >                        http://www.ietf.org/rfc/rfc1806.txt
>
> >                         This header specifies the filename and type of
> >                         a MIME part.
> >                     */
> >                     if(part.getDisposition() == null) {
> >                         // This is just a plain text email
> >                     } else {
> >                         // We have something interesting. Let's parse it.
>
> >                         // Create a new ByteArrayDataSource with this part
> >                         MimeBodyPart inboundMimeBodyPart = (MimeBodyPart)
> > part;
> >                         InputStream is = part.getInputStream();
> >                         ByteArrayDataSource mimePartDataSource = new
> > ByteArrayDataSource(is, inboundMimeBodyPart.getContentType());
>
> >                         // Create a new outbound MimeBodyPart and set this
> > as the handler
> >                         MimeBodyPart outboundMimeBodyPart = new
> > MimeBodyPart();
> >                         outboundMimeBodyPart.setDataHandler(new
> > DataHandler(mimePartDataSource));
>
> > outboundMimeBodyPart.setFileName(inboundMimeBodyPart.getFileName());
> >                         outboundMultipart.addBodyPart(outboundMimeBodyPart);
>
> >                     }
>
> >                 }
> >                 message.setContent(outboundMultipart);
>
> >             }
> >             message.setFrom(new InternetAddress(SENDER, "Relay account"));
> >             message.setRecipient(Message.RecipientType.TO, new
> > InternetAddress(RECIPIENT, "Recipient"));
>
> >             Transport.send(message);
>
> >         } catch (MessagingException e) {
> >             throw new ServletException(e);
> >         }
> >     }
>
> > }
> > On Sat, Nov 14, 2009 at 1:11 AM, mably <fm2...@mably.com> wrote:
> > > Hi Ikai, have you been able to reproduce my "Converting attachment
> > > data failed" exception ?
>
> > > I'm still stuck on this strange bug.
>
> > > Thanx for your help.
>
> > > On 11 nov, 00:00, mably <fm2...@mably.com> wrote:
> > > > Of course, here is below my email relay servlet class.  What I'm
> > > > willing to do is to hide my customers email addresses by relaying
> > > > email to them via my google app email adress.
>
> > > > I would like to be able to relay html emails with images which is
> > > > quite common nowadays.  I am sending my test emails from a gmail
> > > > account.
>
> > > > Thanx for your help.
>
> > > > /*
> > > >  * Copyright (C) 2009 Francois Masurel
> > > >  *
> > > >  * This program is free software: you can redistribute it and/or
> > > > modify
> > > >  * it under the terms of the GNU General Public License as published
> > > > by
> > > >  * the Free Software Foundation, either version 3 of the License, or
> > > >  * any later version.
> > > >  *
> > > >  * This program is distributed in the hope that it will be useful,
> > > >  * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > > >  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> > > >  * GNU General Public License for more details.
> > > >  *
> > > >  * You should have received a copy of the GNU General Public License
> > > >  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
>
> > > >  */
>
> > > > package com.mably.cms.web;
>
> > > > import java.io.IOException;
> > > > import java.io.InputStream;
> > > > import java.util.Arrays;
> > > > import java.util.Properties;
>
> > > > import javax.activation.DataHandler;
> > > > import javax.activation.DataSource;
> > > > import javax.mail.BodyPart;
> > > > import javax.mail.Message;
> > > > import javax.mail.MessagingException;
> > > > import javax.mail.Multipart;
> > > > import javax.mail.Session;
> > > > import javax.mail.Transport;
> > > > import javax.mail.internet.InternetAddress;
> > > > import javax.mail.internet.MimeBodyPart;
> > > > import javax.mail.internet.MimeMessage;
> > > > import javax.mail.internet.MimeMultipart;
> > > > import javax.mail.internet.MimeMessage.RecipientType;
> > > > import javax.mail.util.ByteArrayDataSource;
> > > > import javax.servlet.ServletException;
> > > > import javax.servlet.http.HttpServlet;
> > > > import javax.servlet.http.HttpServletRequest;
> > > > import javax.servlet.http.HttpServletResponse;
>
> > > > import org.slf4j.Logger;
> > > > import org.slf4j.LoggerFactory;
>
> > > > import com.google.inject.Inject;
> > > > import com.google.inject.Singleton;
> > > > import com.mably.cms.model.ContentManager;
> > > > import com.mably.cms.utils.TraitementStream;
>
> > > > /**
> > > >  * @author f.masurel
> > > >  *
> > > >  */
> > > > @Singleton
> > > > public class ContactMailServlet extends HttpServlet {
>
> > > >     /** serialVersionUID. */
> > > >     private static final long serialVersionUID = 7131942698661805870L;
>
> > > >     /** Logger. */
> > > >     private static final Logger LOG =
> > > >         LoggerFactory.getLogger(ContactMailServlet.class);
>
> > > >     @Inject private ContentManager contentManager;
>
> > > >     /**
> > > >      * {...@inheritdoc}
> > > >      */
> > > >     public void doPost(HttpServletRequest req, HttpServletResponse
> > > > res)
> > > >             throws ServletException, IOException {
>
> > > >         Properties props = new Properties();
> > > >         Session session = Session.getDefaultInstance(props, null);
>
> > > >         try {
>
> > > >                 MimeMessage msg = new MimeMessage(session,
> > > req.getInputStream
> > > > ());
>
> > > >                         String contentType = msg.getContentType();
>
> > > >                         LOG.info("Mail content type : " + contentType);
> > > >                        ...
>
> plus de détails »

--

You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=.


Reply via email to