个人公司网站怎么做/友情链接的形式有哪些
本文来源:http://www.mydlq.club/article/9/
. 一、配置邮箱
. 二、Maven 引入包
. 三、邮件实体类
. 四、发送邮件工具类
. 五、测试的 Main 方法
. 六、查看收到的邮件效果
环境介绍:
Java 版本:1.8.0_191
JavaMail 版本:1.6.2
一、配置邮箱
为了设置发件邮箱能有发送邮件权限,请先设置邮箱开启 POP3/SMPT/IMAP 等选项。
这里用的是 163 邮箱
二、Maven 引入包
com.sun.mail
javax.mail
1.6.2
三、邮件实体类
邮件内容实体类,定义一些发送邮件的属性。
注意,为了简化实体类写法,这里使用了 lombok 工具。实体类
import lombok.Data;
@Data
public class SimpleMail {
private String[] to;
private String[] cc;
private String[] bcc;
private String from;
private String host;
private String port;
private String subject;
private String body;
private String[] attachment;
private String username;
private String password;
private Boolean isHtml;
}
四、发送邮件工具类
发送邮件工具类,用词工具调用 JavaMail 发送邮件。
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.*;
import java.io.UnsupportedEncodingException;
import java.util.*;
public class MailUtils {
/**
* 发送邮件
* @param simpleMail
*/
public static void sendMail(SimpleMail simpleMail) {
/** 获取系统属性 **/
Properties properties = System.getProperties();
/** 设置邮件服务器 **/
properties.setProperty("mail.smtp.host", simpleMail.getHost());
/** 设置邮件服务器端口 **/
properties.setProperty("mail.smtp.port", simpleMail.getPort());
/** 设置服务器验证为true **/
properties.put("mail.smtp.auth", "true");
/** 获取默认session对象 **/
Session session = Session.getDefaultInstance(properties, new Authenticator() {
// 设置提供的发件邮箱与给的邮箱授权码
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(simpleMail.getUsername(), simpleMail.getPassword());
}
});
try {
/** 创建默认的 MimeMessage 对象 **/
MimeMessage message = new MimeMessage(session);
/** 设置发件人 **/
message.setFrom(new InternetAddress(simpleMail.getFrom()));
/** 设置收件人、抄送、密送 **/
List<InternetAddress> toList = new ArrayList<>();
List<InternetAddress> ccList = new ArrayList<>();
List<InternetAddress> bccList = new ArrayList<>();
if (simpleMail.getTo() != null) {
for (String str : simpleMail.getTo()) {
toList.add(new InternetAddress(str));
}
message.addRecipients(Message.RecipientType.TO, toList.toArray(new InternetAddress[]{}));
}
if (simpleMail.getCc() != null) {
for (String str : simpleMail.getCc()) {
toList.add(new InternetAddress(str));
}
message.addRecipients(Message.RecipientType.CC, ccList.toArray(new InternetAddress[]{}));
}
if (simpleMail.getBcc() != null) {
for (String str : simpleMail.getBcc()) {
toList.add(new InternetAddress(str));
}
message.addRecipients(Message.RecipientType.BCC, bccList.toArray(new InternetAddress[]{}));
}
// 设置标题Subject
message.setSubject(simpleMail.getSubject());
//message.setText(simpleMail.getBody());
/** 创建消息部分 **/
// 创建消息体对象
BodyPart messageBodyPart = new MimeBodyPart();
// 创建多重消息对象
Multipart multipart = new MimeMultipart();
/** 设置消息 **/
//messageBodyPart.setText(simpleMail.getBody());
if (simpleMail.getIsHtml()) {
messageBodyPart.setContent(simpleMail.getBody(), "text/html;charset=utf-8");
} else {
messageBodyPart.setContent(simpleMail.getBody(), "text/plain;charset=utf-8");
}
// 添加到 multipart
multipart.addBodyPart(messageBodyPart);
/** 设置附件 **/
if (simpleMail.getAttachment()!=null){
for (String str:simpleMail.getAttachment()){
messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(str);
messageBodyPart.setDataHandler(new DataHandler(source));
// 设置文件名
System.out.println(str);
messageBodyPart.setFileName(MimeUtility.encodeText(str.substring(str.lastIndexOf("/")+1)));
// 添加到 multipart
multipart.addBodyPart(messageBodyPart);
}
}
/** 设置消息内容与附件 **/
message.setContent(multipart);
/** 发送消息 **/
Transport.send(message);
System.out.println("发送成功!");
} catch (MessagingException | UnsupportedEncodingException mex) {
mex.printStackTrace();
}
}
}
五、测试的 Main 方法
先编写自定义的实体对象,将邮件内容、收件人、发件人等等定义好,在用此实体对象当参数调用邮件发送工具类发送邮件。
public static void main(String[] args) {
/** 1、设置发送邮件内容对象 **/
SimpleMail simpleMail = new SimpleMail();
// 指定发送邮件的服务器地址
simpleMail.setHost("smtp.163.com");
// 指定发送邮件服务器的端口
simpleMail.setPort("25");
// 收件人电子邮箱
simpleMail.setTo(new String[]{"32******7@qq.com", "mydlq.club@gmail.com"});
// 收件人抄送
simpleMail.setCc(new String[]{"123456789@qq.com"});
// 收件人密送
simpleMail.setTo(new String[]{"111111111@qq.com"});
// 发件人电子邮箱
simpleMail.setFrom("m*******lq@163.com");
// 邮件主题
simpleMail.setSubject("测试邮件");
// 邮件内容
//simpleMail.setBody("这是一封测试邮件");
simpleMail.setBody("" +
"
主题:测试
" +
"
结果:签到人数:xxx
" +
"");
// 是否为 HTML 格式邮件
simpleMail.setIsHtml(true);
// 邮件附件
simpleMail.setAttachment(new String[]{"d://非签到表.xlsx", "d://签到表.xlsx"});
// 设置发件邮箱的用户名、验证码
simpleMail.setUsername("m******lq@163.com");
simpleMail.setPassword("a*******0");
/** 2、调用方法发送邮件 **/
// 发送邮件测试
sendMail(simpleMail);
}
六、查看收到的邮件效果
上面代码执行成功后邮箱就会收到一条邮件信息,如下:
● 少年,Java 中的加密与签名知道否?
● SpringBoot 中优雅处理参数验证,到底发生了什么?
● Java人应该知道的SpringBoot For Kafka (上)
● Java人应该知道的SpringBoot For Kafka (下)
● SpringBoot 多种读取配置文件中参数的方式
● SpringBoot 操作 ElasticSearch 详解
● SpringBoot 使用 Caffeine 本地缓存
● Github推出了GitHub CLI
● (很全面)SpringBoot 集成 Apollo 配置中心
● 你知道如何成为一名靠谱的架构师不?
● Tomcat 在 SpringBoot 中是如何启动的?
● SpringBoot 深度调优,让你的项目飞起来!
● 8种经常被忽视的SQL错误用法,你有没有踩过坑?
● Java面试应该知道之深入理解Java的接口和抽象类