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) 

  • Persistenza di un menu contestuale dopo la rotazione dello schermo
  • Accesso ad appView da Cordova 5.0.0
  • Animazioni multiple su 1 imageview android
  • SERVER_ERROR: 1675030 : errore nell'esecuzione della query
  • impostare loadURLTImeOutValue su webview
  • Simulare l'uccisione dell'attività in emulatore
  • Android, Effettua un'image in un URL uguale all'image di ImageView
  • Errore "Versione errata dell'archivio chiavi". Come posso creare un certificato di versione = 1 keystore?
  • Come ricevere una notifica quando un peer non è più disponibile nella gamma Wi-Fi Direct?
  • Distriggers un'intera attività dall'azione dell'utente
  • Convertire da formato a lungo in data
  • Valore predefinito "debuggable" di 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.