前言
本篇介绍如果利用javamail发送邮件
实现
引入JavaMail依赖
如果是Maven,加入pom.xml:
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
如果是Gradle,加入build.gradle
implementation("com.sun.mail:javax.mail:1.6.2")
新建MailUtils工具类:
目前使用的邮件服务器基本上都是需要验证的,所以使用了EmailAutherticator extends Authenticator做认证
subject主题用MimeUtility编码过,解决中文乱码问题。
package com.terrynow.test;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;
import java.util.Date;
import java.util.Properties;
/**
* @author Terry E-mail: yaoxinghuo at 126 dot com
* @date 2021-03-30 2:09:15
*/
public class MailUtils {
private String host;//邮件服务器smtp地址
private String username;//发送邮件的账号
private String password;//发送邮件的密码
private String from;//发件人的email地址
private String fromnick;//发件人的昵称
/**
*
* @param host 邮件服务器smtp地址
* @param username 发送邮件的账号
* @param password 发送邮件的密码
* @param from 发件人的email地址
* @param fromnick 发件人的昵称
*/
public MailUtils(String host, String username, String password, String from, String fromnick) {
this.host = host;
this.username = username;
this.password = password;
this.from = from;
this.fromnick = fromnick;
}
public void sendMail(String toName, String toAddress, String subject, String body) throws Exception {
Properties props = new Properties();
Authenticator auth = new EmailAutherticator();
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", "true");
// props.put("mail.smtp.port", "465");//smt端口默认25,如果是不是默认端口,可以另外设置
Session session = Session.getDefaultInstance(props, auth);
// 设置session,和邮件服务器进行通讯。
MimeMessage message = new MimeMessage(session);
message.setSubject(MimeUtility.encodeText(subject)); // 设置邮件主题
message.setText(body); // 设置邮件正文
message.setContent("", "text/html;charset=utf-8");
message.setSentDate(new Date()); // 设置邮件发送日期
message.setFrom(new InternetAddress(from, fromnick)); // 设置邮件发送者的地址
message.addRecipient(Message.RecipientType.TO, new InternetAddress(toAddress, toName));
Transport.send(message);
}
public void sendHtmlMail(String toName, String toAddress, String subject, String html) throws Exception {
Properties props = new Properties();
Authenticator auth = new EmailAutherticator();
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", "true");
// props.put("mail.smtp.port", "465");//smt端口默认25,如果是不是默认端口,可以另外设置
Session session = Session.getDefaultInstance(props, auth);
// 设置session,和邮件服务器进行通讯。
MimeMessage message = new MimeMessage(session);
message.setSubject(MimeUtility.encodeText(subject)); // 设置邮件主题
message.setContent(html, "text/html;charset=utf-8"); // 设置HTML邮件正文
message.setSentDate(new Date()); // 设置邮件发送日期
message.setFrom(new InternetAddress(from, fromnick)); // 设置邮件发送者的地址
message.addRecipient(Message.RecipientType.TO, new InternetAddress(toAddress, toName));
Transport.send(message);
}
/**
* 用来进行服务器对用户的认证
*/
class EmailAutherticator extends Authenticator {
public EmailAutherticator() {
super();
}
public EmailAutherticator(String user, String pwd) {
super();
username = user;
password = pwd;
}
@Override
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
}
}
测试发送邮件:
//填入邮件服务器的基本信息,如smtp地址,账号,密码等
MailUtils u = new MailUtils("smtpdm.aliyun.com", "[email protected]", "password",
"[email protected]", "Terry");
//发送邮件
u.sendMail("service", "[email protected]", "中文主题", "中文内容");
//测试发送HTML的邮件(样式都建议写在style里)
String html = "<body style=\"color: #666; font-size: 14px; font-family: 'Open Sans',Helvetica,Arial,sans-serif;\">" +
"<div style='font-size:18px;font-weight:600;color:red'>测试HTML</div>"+
"</body>";
u.sendHtmlMail("service", "[email protected]", "中文主题", html);
文章评论
Cialis Jfficr Eqqqrb order cialis online without prescription Cialis site de vente de cialis Vuhpby