Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Enviando correo electrónico con adjunto a través de GMailSender?

He estado leyendo los blogs y he probado numerosas implementaciones pero todavía no he podido obtener una imagen adjunta a un correo electrónico que estoy enviando a través de GMail usando java. Descargé todos los frascos y agregó GMailSender.java, GMailAuthenticator.java, y JSSEProvider.java y puedo enviar correos regulares muy bien. La forma en que he intentado hacerlo se muestra a continuación, con la parte media que se ha comentado ser la parte que esperaba añadir la imagen. Debajo de ésa es la salida en el logcat cuando intento ejecutar esto. Seguramente estoy perdiendo algo bastante simple. ¿Podría alguien señalar a mí por favor? Gracias por adelantado.

public synchronized void sendMail(String subject, String body, String sender, String recipients) throws Exception { try { Thread.currentThread().setContextClassLoader(getClass().getClassLoader()); MimeMessage message = new MimeMessage(session); DataHandler handler = new DataHandler(new ByteArrayDataSource(body.getBytes(), "text/plain")); message.setSender(new InternetAddress(sender)); message.setSubject(subject); message.setDataHandler(handler); /* // Create your new message part BodyPart imgPart = new MimeBodyPart(); // Create a related multi-part to combine the parts MimeMultipart multipart = new MimeMultipart("related"); multipart.addBodyPart(imgPart); String fileName = "http://.../sampleBarcode.png"; ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); if (classLoader == null) { classLoader = this.getClass().getClassLoader(); if (classLoader == null) { System.out.println("IT IS NULL AGAIN!!!!"); } } DataSource ds = new URLDataSource(classLoader.getResource(fileName)); imgPart.setDataHandler(new DataHandler(ds)); imgPart.setHeader("Content-ID", "<logoimg_cid>"); multipart.addBodyPart(imgPart); message.setContent(multipart); */ if(recipients.indexOf(',') > 0) { message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipients)); } else message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients)); Transport.send(message); } catch(Exception e){Log.e("EMAIL_ERROR",e.getMessage(), e);} } null java.lang.NullPointerException at javax.activation.URLDataSource.getContentType(URLDataSource.java:91) at javax.activation.DataHandler.getContentType(DataHandler.java:218) ... ... (plus some more) 

One Solution collect form web for “Enviando correo electrónico con adjunto a través de GMailSender?”

He modificado la función para aceptar un parámetro File y adjuntarlo al correo electrónico, aquí está

 public synchronized void sendMail(String subject, String body, String sender, String recipients, File attachment) throws Exception { try{ MimeMessage message = new MimeMessage(session); message.setSender(new InternetAddress(sender)); message.setSubject(subject); MimeBodyPart mbp1 = new MimeBodyPart(); mbp1.setText(body); MimeBodyPart mbp2 = new MimeBodyPart(); FileDataSource fds = new FileDataSource(attachment); mbp2.setDataHandler(new DataHandler(fds)); mbp2.setFileName(fds.getName()); Multipart mp = new MimeMultipart(); mp.addBodyPart(mbp1); mp.addBodyPart(mbp2); message.setContent(mp); if (recipients.indexOf(',') > 0) message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipients)); else message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients)); Transport.send(message); }catch(Exception e){ } } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.