This example shows how to send an email with attachment in Java using Java Mail API.
To send the message using JavaMail API, SMTP server properties are required.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import java.util.Date; import java.util.Properties; public class EmailAttachmentDemo { public static void main(String[] args) { EmailAttachmentDemo demo = new EmailAttachmentDemo(); demo.sendEmail(); } public void sendEmail() { String from = "email@example.com"; String to = "email@example.com"; String subject = "Important Message"; String bodyText = "This is a important message with attachment"; String filename = "jee-sample/src/main/resources/data.txt"; Properties properties = new Properties(); properties.put("mail.smtp.host", "smtp.example.com"); properties.put("mail.smtp.port", "25"); Session session = Session.getDefaultInstance(properties, null); try { MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(from)); message.setRecipient(Message.RecipientType.TO, new InternetAddress(to)); message.setSubject(subject); message.setSentDate(new Date()); // // Set the email message text. // MimeBodyPart messagePart = new MimeBodyPart(); messagePart.setText(bodyText); // // Set the email attachment file // MimeBodyPart attachmentPart = new MimeBodyPart(); FileDataSource fileDataSource = new FileDataSource(filename) { @Override public String getContentType() { return "application/octet-stream"; } }; attachmentPart.setDataHandler(new DataHandler(fileDataSource)); attachmentPart.setFileName(fileDataSource.getName()); Multipart multipart = new MimeMultipart(); multipart.addBodyPart(messagePart); multipart.addBodyPart(attachmentPart); message.setContent(multipart); Transport.send(message); } catch (MessagingException e) { e.printStackTrace(); } } } |