Invio di email con allegato tramite GMailSender?

Ho letto i blog e ho provato numerose implementazioni, ma non sono ancora riuscito a get un'image allegata a un'email che invio tramite Gmail utilizzando java. Ho scaricato tutti i vasetti e ho aggiunto GMailSender.java, GMailAuthenticator.java e JSSEProvider.java e sono in grado di submit regolarmente messaggi di posta elettronica. Il modo in cui ho provato a farlo è mostrato di seguito, con la parte centrale che è stata commentata come la parte che avevo sperato potrebbe aggiungere l'image. Sotto che è l'output sul logcat quando provo a eseguire questo. Sicuramente manca qualcosa di piuttosto semplice. Potrebbe qualcuno metterlo in contatto con me per favore? Grazie in anticipo.

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) 

  • I pulsanti hardware AVD non sono abilitati
  • Come può un codice in un progetto di libreria call il codice nel progetto di applicazione?
  • Ottenere la latitudine e la longitudine dall'indirizzo in android
  • Errore nel lancio di AVD con processre AMD
  • Il servizio di un'app per arrestare quando il telefono non viene addebitato
  • Eliminare tutti gli elementi memorizzati nella cache creati da un WebView?
  • Come posizionare il layout relativo in fondo alla schermata (o layout lineare).?
  • Distribuisci app tramite Google Play Store in un canale privato senza Google Apps?
  • Come get un unico ID hardware di dispositivo in Android?
  • Android nasconde / apre l'applicazione icona in modo programmato
  • ImageView OutofMemoryException
  • Sbarazzarsi del gradiente in cima ad un'attività (Android)
  • One Solution collect form web for “Invio di email con allegato tramite GMailSender?”

    Ho modificato la function per accettare un parametro File e allegarlo all'email, qui è

     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){ } } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.