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) 

  • Filtro de intenciones para descargar adjuntos de aplicaciones de gmail en Android
  • ¿Cómo obtener una miniatura para el video en mi / sdcard / Android / datos / mi carpeta / carpeta de archivos?
  • Android cambia el color de fondo del lienzo sin perder ningún dibujo de él
  • Android - Dos botones en la misma línea que llenan todo el ancho
  • Android - Cómo obtener el nombre de archivo seleccionado del documento
  • Cambiar dónde comienza el cursor en un EditText expandido
  • ¿Cambiar el color del texto en un WebView?
  • 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.