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=.