2011-05-15 12 views
8

मैं ब्लॉग पढ़ रहा हूं और कई कार्यान्वयन की कोशिश की है लेकिन अभी भी एक ईमेल से जुड़ी एक छवि प्राप्त करने में असफल रहा है जिसे मैं जावा का उपयोग करके जीमेल के माध्यम से भेज रहा हूं। मैंने सभी जार डाउनलोड किए और GMailSender.java, GMailAuthenticator.java, और JSSEProvider.java को जोड़ा और मैं नियमित ई-मेल को ठीक से भेजने में सक्षम हूं। जिस तरह से मैंने इसे करने का प्रयास किया है, नीचे दिखाया गया है, मध्य भाग के साथ जिसने मुझे उम्मीद की थी कि वह हिस्सा जोड़कर छवि को जोड़ देगा। जब मैं इसे निष्पादित करने का प्रयास करता हूं तो नीचे लॉगकैट पर आउटपुट होता है। निश्चित रूप से मैं कुछ आसान याद कर रहा हूँ। क्या कोई इसे मेरे लिए इंगित कर सकता है? अग्रिम में धन्यवाद।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) 

उत्तर

9

मैं एक फ़ाइल पैरामीटर को स्वीकार करने और ईमेल में अटैच करने के समारोह संशोधित, यहाँ यह

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

इसके ठीक काम कर रहा .. thnks है –

संबंधित मुद्दे