开发者

Sending email with attachment through GMailSender?

开发者 https://www.devze.com 2023-03-05 18:59 出处:网络
I have been reading the blogs and have tried numerous implementations but have still failed to get an image attached to an email that I\'m sending through GMail using java.I downloaded all the jars an

I have been reading the blogs and have tried numerous implementations but have still failed to get an image attached to an email that I'm sending through GMail using java. I downloaded all the jars and added GMailSender.java, GMailAuthenticator.java, and JSSEProvider.java and I'm able to send regular e-mails just fine. The way I've tried doing it is shown below, with the middle part that's commented out being the part I had hoped would add the image. Below that is the output on the logcat when I try to execute this. Surely I am missing something pretty simple. Could someone point it out to me please? Thanks in advance.

    public synchronized void sendMail(String subject, String 开发者_StackOverflowbody, 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 modified the function to accept a File parameter and attach it to the email, here it is

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

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号