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.