java sendemail_Java How to send Email

f8479574105fb2174370f45f42c5fb95.png

To send email in Java, we need JavaMail

pom.xml

com.sun.mail

javax.mail

1.6.2

1. Send Email

Send a normal email in text format.

SendEmailSMTP.java

package com.mkyong;

import com.sun.mail.smtp.SMTPTransport;

import javax.mail.Message;

import javax.mail.MessagingException;

import javax.mail.Session;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeMessage;

import java.util.Date;

import java.util.Properties;

public class SendEmailSMTP {

// for example, smtp.mailgun.org

private static final String SMTP_SERVER = "smtp server ";

private static final String USERNAME = "";

private static final String PASSWORD = "";

private static final String EMAIL_FROM = "From@gmail.com";

private static final String EMAIL_TO = "email_1@yahoo.com, email_2@gmail.com";

private static final String EMAIL_TO_CC = "";

private static final String EMAIL_SUBJECT = "Test Send Email via SMTP";

private static final String EMAIL_TEXT = "Hello Java Mail \n ABC123";

public static void main(String[] args) {

Properties prop = System.getProperties();

prop.put("mail.smtp.host", SMTP_SERVER); //optional, defined in SMTPTransport

prop.put("mail.smtp.auth", "true");

prop.put("mail.smtp.port", "25"); // default port 25

Session session = Session.getInstance(prop, null);

Message msg = new MimeMessage(session);

try {

// from

msg.setFrom(new InternetAddress(EMAIL_FROM));

// to

msg.setRecipients(Message.RecipientType.TO,

InternetAddress.parse(EMAIL_TO, false));

// cc

msg.setRecipients(Message.RecipientType.CC,

InternetAddress.parse(EMAIL_TO_CC, false));

// subject

msg.setSubject(EMAIL_SUBJECT);

// content

msg.setText(EMAIL_TEXT);

msg.setSentDate(new Date());

// Get SMTPTransport

SMTPTransport t = (SMTPTransport) session.getTransport("smtp");

// connect

t.connect(SMTP_SERVER, USERNAME, PASSWORD);

// send

t.sendMessage(msg, msg.getAllRecipients());

System.out.println("Response: " + t.getLastServerResponse());

t.close();

} catch (MessagingException e) {

e.printStackTrace();

2. Send Email in HTML format

The key is create a custom javax.activation.DataSource to handle HTML format.

SendEmailHTML.java

package com.mkyong;

import com.sun.mail.smtp.SMTPTransport;

import javax.activation.DataHandler;

import javax.activation.DataSource;

import javax.mail.Message;

import javax.mail.MessagingException;

import javax.mail.Session;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeMessage;

import java.io.ByteArrayInputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.util.Date;

import java.util.Properties;

public class SendEmailHTML {

// for example, smtp.mailgun.org

private static final String SMTP_SERVER = "smtp server ";

private static final String USERNAME = "";

private static final String PASSWORD = "";

private static final String EMAIL_FROM = "From@gmail.com";

private static final String EMAIL_TO = "email_1@yahoo.com, email_2@gmail.com";

private static final String EMAIL_TO_CC = "";

private static final String EMAIL_SUBJECT = "Test Send Email via SMTP (HTML)";

private static final String EMAIL_TEXT = "

Hello Java Mail \n ABC123

";

public static void main(String[] args) {

Properties prop = System.getProperties();

prop.put("mail.smtp.auth", "true");

Session session = Session.getInstance(prop, null);

Message msg = new MimeMessage(session);

try {

msg.setFrom(new InternetAddress(EMAIL_FROM));

msg.setRecipients(Message.RecipientType.TO,

InternetAddress.parse(EMAIL_TO, false));

msg.setSubject(EMAIL_SUBJECT);

// TEXT email

//msg.setText(EMAIL_TEXT);

// HTML email

msg.setDataHandler(new DataHandler(new HTMLDataSource(EMAIL_TEXT)));

SMTPTransport t = (SMTPTransport) session.getTransport("smtp");

// connect

t.connect(SMTP_SERVER, USERNAME, PASSWORD);

// send

t.sendMessage(msg, msg.getAllRecipients());

System.out.println("Response: " + t.getLastServerResponse());

t.close();

} catch (MessagingException e) {

e.printStackTrace();

static class HTMLDataSource implements DataSource {

private String html;

public HTMLDataSource(String htmlString) {

html = htmlString;

@Override

public InputStream getInputStream() throws IOException {

if (html == null) throw new IOException("html message is null!");

return new ByteArrayInputStream(html.getBytes());

@Override

public OutputStream getOutputStream() throws IOException {

throw new IOException("This DataHandler cannot write HTML");

@Override

public String getContentType() {

return "text/html";

@Override

public String getName() {

return "HTMLDataSource";

3. Send Email with Attachment

3.1 The key is creating MimeBodyPart and add it into Multipart

import javax.mail.internet.MimeBodyPart;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMultipart;

// text

MimeBodyPart p1 = new MimeBodyPart();

p1.setText(EMAIL_TEXT);

// file

MimeBodyPart p2 = new MimeBodyPart();

FileDataSource fds = new FileDataSource("path/example.txt");

p2.setDataHandler(new DataHandler(fds));

p2.setFileName(fds.getName());

Multipart mp = new MimeMultipart();

mp.addBodyPart(p1);

mp.addBodyPart(p2);

msg.setContent(mp);

3.2 A complete example to attach a file as an attachment, and send it out.

SendEmailAttachment.java

package com.mkyong;

import com.sun.mail.smtp.SMTPTransport;

import javax.activation.DataHandler;

import javax.activation.FileDataSource;

import javax.mail.Message;

import javax.mail.MessagingException;

import javax.mail.Multipart;

import javax.mail.Session;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeBodyPart;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMultipart;

import java.util.Properties;

public class SendEmailAttachment {

// for example, smtp.mailgun.org

private static final String SMTP_SERVER = "smtp server ";

private static final String USERNAME = "";

private static final String PASSWORD = "";

private static final String EMAIL_FROM = "From@gmail.com";

private static final String EMAIL_TO = "email_1@yahoo.com, email_2@gmail.com";

private static final String EMAIL_TO_CC = "";

private static final String EMAIL_SUBJECT = "Test Send Email via SMTP (ATTACHMENT)";

private static final String EMAIL_TEXT = "Hello Java Mail \n ABC123";

public static void main(String[] args) {

Properties prop = System.getProperties();

prop.put("mail.smtp.auth", "true");

Session session = Session.getInstance(prop, null);

Message msg = new MimeMessage(session);

try {

msg.setFrom(new InternetAddress(EMAIL_FROM));

msg.setRecipients(Message.RecipientType.TO,

InternetAddress.parse(EMAIL_TO, false));

msg.setSubject(EMAIL_SUBJECT);

// text

MimeBodyPart p1 = new MimeBodyPart();

p1.setText(EMAIL_TEXT);

// file

MimeBodyPart p2 = new MimeBodyPart();

FileDataSource fds = new FileDataSource("path/example.txt");

p2.setDataHandler(new DataHandler(fds));

p2.setFileName(fds.getName());

Multipart mp = new MimeMultipart();

mp.addBodyPart(p1);

mp.addBodyPart(p2);

msg.setContent(mp);

SMTPTransport t = (SMTPTransport) session.getTransport("smtp");

// connect

t.connect(SMTP_SERVER, USERNAME, PASSWORD);

// send

t.sendMessage(msg, msg.getAllRecipients());

System.out.println("Response: " + t.getLastServerResponse());

t.close();

} catch (MessagingException e) {

e.printStackTrace();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值