Search code examples
javaemailemail-attachments

How to send a pdf via e-mail from Java


How do I submit a pdf file to a generic e-mail from Java application?


Solution

  • You can Send E-Mail with PDF file as Attachment using reference of this -

    import java.util.*;
    import javax.mail.*;
    import javax.mail.internet.*;
    import javax.activation.*;  
    
    class SendMailWithAttachment
    { 
        public static void main(String [] args)
        {    
            String to="XYZ@abc.com"; //Email address of the recipient
            final String user="ABC@XYZ.com"; //Email address of sender
            final String password="xxxxx";  //Password of the sender's email
    
            //Get the session object      
            Properties properties = System.getProperties();  
    
            //Here pass your smtp server url
            properties.setProperty("mail.smtp.host", "mail.javatpoint.com");   
            properties.put("mail.smtp.auth", "true");    
    
            Session session = Session.getDefaultInstance(properties,   
                    new javax.mail.Authenticator() {   
                protected PasswordAuthentication getPasswordAuthentication() {   
                    return new PasswordAuthentication(user,password);    }   });       
    
            //Compose message      
            try{    
                MimeMessage message = new MimeMessage(session);    
                message.setFrom(new InternetAddress(user));     
                message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));    
                message.setSubject("Message Aleart");         
    
                //Create MimeBodyPart object and set your message text        
                BodyPart messageBodyPart1 = new MimeBodyPart();     
                messageBodyPart1.setText("This is message body");          
    
                //Create new MimeBodyPart object and set DataHandler object to this object        
                MimeBodyPart messageBodyPart2 = new MimeBodyPart();      
                String filename = "YourPDFFileName.pdf";//change accordingly     
                DataSource source = new FileDataSource(filename);    
                messageBodyPart2.setDataHandler(new DataHandler(source));    
                messageBodyPart2.setFileName(filename);             
    
                //Create Multipart object and add MimeBodyPart objects to this object        
                Multipart multipart = new MimeMultipart();    
                multipart.addBodyPart(messageBodyPart1);     
                multipart.addBodyPart(messageBodyPart2);      
    
                //Set the multiplart object to the message object    
                message.setContent(multipart );        
    
                //Send message    
                Transport.send(message);      
                System.out.println("message sent....");   
    
            }catch (MessagingException ex) {ex.printStackTrace();}  
        }
    } 
    

    You can also refer to JavaTPoint