2011-05-15 17 views
8

Bloglarımı okudum ve çok sayıda uygulamayı denedim, ancak hala java'yı kullanarak GMail üzerinden gönderdiğim bir e-postaya eklenmiş bir resim alamadım. Tüm kavanozları indirdim ve GMailSender.java, GMailAuthenticator.java ve JSSEProvider.java ekledim ve düzenli e-postaları gönderebiliyorum. Bunu yapmayı denedim, aşağıda görüldüğü gibi, orta kısım görüntüyü eklemeyi umduğum kısım olarak yorumladı. Bunun altında çalıştırmayı denediğimde logcat üzerindeki çıkış. Elbette oldukça basit bir şey eksik. Biri bana gösterebilir mi lütfen? Şimdiden teşekkürler.GMailSender üzerinden ekli e-posta gönderiliyor mu?

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) 

cevap

9

Bir Dosya parametresini kabul ve e-postaya eklemek için fonksiyonu değiştirilmiş, işte burada

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){ 

    } 
} 
+0

onun iyi çalışıyor .. thnks olduğunu –