¿Enviar correo electrónico con archivo adjunto a través de GMailSender?

He estado leyendo los blogs y he probado numerosas implementaciones, pero aún no he podido obtener una imagen adjunta a un correo electrónico que estoy enviando a través de GMail usando Java. Descargué todos los frascos y agregué GMailSender.java, GMailAuthenticator.java y JSSEProvider.java y puedo enviar correos electrónicos regulares muy bien. La forma en que he intentado hacerlo se muestra a continuación, con la parte central comentada como la parte que esperaba agregaría la imagen. Debajo de eso está la salida en el logcat cuando intento ejecutar esto. Seguramente me estoy perdiendo algo bastante simple. ¿Alguien podría señalarme por favor? Gracias por adelantado

    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)  

Respuestas a la pregunta(1)

Su respuesta a la pregunta