Search code examples
androidimageemailgmailemail-attachments

How to send mail with an image as an attachment in android?


In my android application i need to send the mail with an image as a attachment.I am done with the sending the mail.but how to send the mail with an image as a attachment to the mail.Here i am posting the code for the sending the mail.Please help me to send the image as an attachment in following code.

Here is the code-

public class MailImageFile extends javax.mail.Authenticator {

        public MailImageFile(){}

 public void Mail(String user, String pass) {
    Properties props = new Properties();
    props.put("mail.smtp.host", "smtp.gmail.com");
    props.put("mail.smtp.socketFactory.port", "465");
    props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.port", "465");

    Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator()           {
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication("abc@gmail.com", "pqr123%");
        }
        });
    try {
        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress("abc@gmail.com"));
        message.setRecipients(Message.RecipientType.TO,     InternetAddress.parse("xyz@gmail.com"));
        message.setSubject("Testing Subject");
        message.setContent("Hi...", "text/html; charset=utf-8");

        Transport.send(message);

    } catch (MessagingException e) {
        throw new RuntimeException(e);
    }

}

}


Solution

  •  public class MailImageFile extends javax.mail.Authenticator {
    
                public MailImageFile(){}
    
         public void Mail(String user, String pass) {
            Properties props = new Properties();
            props.put("mail.smtp.host", "smtp.gmail.com");
            props.put("mail.smtp.socketFactory.port", "465");
            props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
            props.put("mail.smtp.auth", "true");
            props.put("mail.smtp.port", "465");
    
            Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator()           {
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication("abc@gmail.com", "pqr123%");
                }
                });
            try {
                Message message = new MimeMessage(session);
                message.setFrom(new InternetAddress("abc@gmail.com"));
                message.setRecipients(Message.RecipientType.TO,     InternetAddress.parse("xyz@gmail.com"));
        message.setContent(_multipart);
                message.setSubject("Testing Subject");
                message.setContent("Hi...", "text/html; charset=utf-8");
    
                Transport.send(message);
    
            } catch (MessagingException e) {
                throw new RuntimeException(e);
            }
    

    //Got this solution form here

        private Multipart _multipart; 
    _multipart = new MimeMultipart(); 
    
    public void addAttachment(String filename,String subject) throws Exception { 
        BodyPart messageBodyPart = new MimeBodyPart(); 
        DataSource source = new FileDataSource(filename); 
        messageBodyPart.setDataHandler(new DataHandler(source)); 
        messageBodyPart.setFileName(filename); 
        _multipart.addBodyPart(messageBodyPart);
    
        BodyPart messageBodyPart2 = new MimeBodyPart(); 
        messageBodyPart2.setText(subject); 
    
        _multipart.addBodyPart(messageBodyPart2); 
    } 
    
    
        }