It doesn't seem like it should cause issues, but if you have a reproducible
test case please let us know.

On Tue, Dec 15, 2009 at 6:06 AM, Don <lydonchan...@gmail.com> wrote:

> Hi Ikai,
>
> So does the order of setDataHandler + setFileName cause problems as I
> wrote above?
>
> Regards
>
>
> On Dec 1, 5:25 am, "Ikai L (Google)" <ika...@google.com> wrote:
> > Interesting, so this did not work?
> >
> > attachment.setDataHandler(new DataHandler(mimePartDataSource));
> > attachment.setFileName("ticker.png");
> >
> > I'll need to do some research into the Java mail spec to see if we are
> > matching it. Could be a bug if we aren't.
> >
> > On Thu, Nov 26, 2009 at 12:48 PM, Don <lydonchan...@gmail.com> wrote:
> > > Thanks Ikai.
> >
> > > It did NOT work before because I set the dataHandler before I set the
> > > FileName.
> >
> > > Just have to set the FileName and then set the DataHandler.
> > > attachment.setFileName("ticker.png");
> > > attachment.setDataHandler(new DataHandler(mimePartDataSource));
> >
> > > Is this behaviour intentional?
> >
> > > Many thanks
> > > Don
> >
> > > On Nov 24, 10:15 am, "Ikai L (Google)" <ika...@google.com> wrote:
> > > > Don,
> >
> > > > First, a word of caution: you'll probably want to contact the
> creators of
> > > > the site you are trying to fetch the image from if you haven't done
> so
> > > > already. Their terms of service prohibit the use of automatic
> downloading
> > > of
> > > > images:http://support.stockcharts.com/forums/31090/entries/20485
> >
> > > > To fetch an image from a URL and send it via the Mail Service, this
> what
> > > you
> > > > need to do:
> >
> > > > 1. Fetch your URL
> > > > 2. Find the content type
> > > > 3. Read the stream into a byte[]
> > > > 4. Create a message and a data handler
> > > > 5. Pass the byte[] into the data source, then into the data handler
> >
> > > > Example code:http://pastie.org/712159
> >
> > > > 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.MimeMultipart;
> > > > import javax.mail.internet.MimeBodyPart;
> > > > import javax.mail.internet.MimeMessage;
> > > > import javax.mail.internet.InternetAddress;
> > > > import javax.activation.DataHandler;
> > > > import java.io.IOException;
> > > > import java.io.InputStream;
> > > > import java.io.ByteArrayOutputStream;
> > > > import java.net.URL;
> > > > import java.util.Properties;
> >
> > > > public class GetStockServlet extends HttpServlet {
> > > >     private static final String SENDER = "your.sen...@domain.com";
> > > >     private static final String RECIPIENT = "
> your.recipi...@domain.com";
> >
> > > >     protected void doGet(HttpServletRequest request,
> HttpServletResponse
> > > > response) throws ServletException, IOException {
> >
> > > >         URL url = new URL("http://yoururl.com/image.png";);
> > > >         InputStream in = url.openStream();
> >
> > > >         byte[] rawData;
> > > >         int len;
> > > >         byte[] buffer = new byte[8192];
> > > >         ByteArrayOutputStream output = new ByteArrayOutputStream();
> >
> > > >         try {
> > > >             while ((len = in.read(buffer, 0, buffer.length)) != -1)
> > > > output.write(buffer, 0, len);
> > > >             rawData = output.toByteArray();
> > > >         } finally {
> > > >             output.close();
> > > >         }
> >
> > > >         response.setContentType("image/png");
> > > >         response.getOutputStream().write(rawData);
> > > >         response.getOutputStream().flush();
> >
> > > >         String htmlBody = "Here is the quote you wanted";
> >
> > > >         Properties props = new Properties();
> > > >         Session session = Session.getDefaultInstance(props, null);
> >
> > > >         Message message = new MimeMessage(session);
> >
> > > >         Multipart mp = new MimeMultipart();
> >
> > > >         MimeBodyPart htmlPart = new MimeBodyPart();
> >
> > > >         try {
> > > >             message.setFrom(new InternetAddress(SENDER, "Stock
> > > Service"));
> > > >             message.addRecipient(Message.RecipientType.TO, new
> > > > InternetAddress(RECIPIENT));
> > > >             message.setSubject("Stock Quote: " + symbol);
> >
> > > >             htmlPart.setContent(htmlBody, "text/html");
> > > >             mp.addBodyPart(htmlPart);
> >
> > > >             ByteArrayDataSource dataSource = new
> > > > ByteArrayDataSource(rawData, "image/png");
> >
> > > >             MimeBodyPart attachment = new MimeBodyPart();
> > > >             attachment.setFileName(symbol + ".png");
> > > >             attachment.setDataHandler(new
> > > > DataHandler(dataSource));
> > > >             mp.addBodyPart(attachment);
> >
> > > >             message.setContent(mp);
> > > >             Transport.send(message);
> > > >         } catch (MessagingException e) {
> > > >             throw new IOException(e);
> > > >         }
> >
> > > >     }
> >
> > > > }
> > > > On Sun, Nov 22, 2009 at 9:04 AM, Don <lydonchan...@gmail.com> wrote:
> > > > > Hi Ikai,
> >
> > > > > I tried your example code, but I cannot attach an image on the
> email
> > > > > that I send.
> > > > > There is no conversion error either.
> >
> > > > > Here is snippets of the code, please help..
> >
> > > > > //Retrieving image:
> > > > > URL     url = new URL("http://stockcharts.com/c-sc/sc?s="; + ticker
> +
> > > > > "&p=DAILY&b=5&g=0&i=0&r=3528");
> > > > > //Sending mail
> > > > > SendMail sendmail = new SendMail(customerEmail, url.openStream());
> >
> > > > > // send mail function
> > > > > public SendMail(String recipient, InputStream imagestream) {
> > > > > msg.setFrom( new InternetAddress("lydonchan...@gmail.com", "dons
> > > > > service"));
> > > > >                        msg.addRecipient(Message.RecipientType.TO,
> new
> > > > > InternetAddress
> > > > > (recipient));
> > > > >                        msg.setSubject("dons service daily charts");
> >
> > > > >                        Multipart multipart = new MimeMultipart();
> >
> > > > >                        MimeBodyPart htmlPart = new MimeBodyPart();
> > > > >                        htmlPart.setContent(" url2: " ,
> "text/html");
> > > > >                        multipart.addBodyPart(htmlPart);
> >
> > > > >                        // append png image?
> > > > >                        ByteArrayDataSource mimePartDataSource = new
> > > > > ByteArrayDataSource
> > > > > (imagestream, "image/png");
> >
> > > > >                        MimeBodyPart attachment = new
> MimeBodyPart();
> > > > >                        attachment.setDataHandler(new
> > > > > DataHandler(mimePartDataSource));
> > > > >                        attachment.setFileName("ticker.png");
> > > > >                        multipart.addBodyPart(attachment);
> > > > >                        msg.setContent(multipart);
> >
> > > > >                        Transport.send(msg);
> > > > > }
> >
> > > > > On Nov 17, 5:35 am, "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:
> >
> > ...
> >
> > read more ยป
>
> --
>
> 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<google-appengine-java%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/google-appengine-java?hl=en.
>
>
>


-- 
Ikai Lan
Developer Programs Engineer, Google App Engine

--

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


Reply via email to