He estado leyendo blogs y he intentado 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. Descargué todas las jarras y agregué GMailSender.java, GMailAuthenticator.java y JSSEProvider.java y puedo enviar correos electrónicos regulares sin problemas. La forma en que he intentado hacerlo se muestra a continuación, con la parte del medio que está comentada como la parte que esperaba agregar la imagen. Debajo está la salida en el logcat cuando intento ejecutar esto. Seguramente me estoy perdiendo algo bastante simple. ¿Alguien podría decírmelo, por favor? Gracias por adelantado.¿Enviando un correo electrónico con un archivo adjunto a través de GMailSender?
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)
sus trabajan bien .. Thnks –