java发送163邮箱案例
需要jar包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
1、mysql数据库封装实体类信息
package common.projects.develop.entity;
import lombok.Data;
import java.io.Serializable;
@Data
public class EmailEntity implements Serializable {
private String sender; //发送人
private String server; //服务器
private String protocol; //协议
private String auth; //是否认证
private String format; //邮件格式
private String timeout; //超时时间
private String code; //授权码
public EmailEntity(String sender, String server, String protocol, String auth, String format, String timeout, String code) {
this.sender = sender;
this.server = server;
this.protocol = protocol;
this.auth = auth;
this.format = format;
this.timeout = timeout;
this.code = code;
}
}
2、email接口封装
package common.projects.develop.service;
import common.projects.develop.entity.EmailEntity;
import javax.mail.MessagingException;
import javax.mail.internet.AddressException;
import java.io.UnsupportedEncodingException;
import java.util.List;
/**
* 发送邮件接口
*/
public interface EmailService {
/**
* 简单发送邮件接口(发送人 主题 内容 接收人)
* @param sender
* @param theme
* @param content
* @param recipient
* @return
*/
void sendAttachmentMail(EmailEntity sender, String theme, String content, String recipient) throws MessagingException;
/**
* 带附件发送文件接口 (发送人 主题 内容 附件信息 接收人)
* @param sender
* @param theme
* @param content
* @param filePath
* @param recipient
* @return
*/
void sendAttachment(EmailEntity sender, String theme, String content, List<String> filePath,String recipient) throws MessagingException, UnsupportedEncodingException;
}
3、接口实现类
package common.projects.develop.service.impl;
import common.projects.develop.entity.EmailEntity;
import common.projects.develop.service.EmailService;
import org.springframework.stereotype.Service;
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.Date;
import java.util.List;
import java.util.Properties;
import static javax.mail.Transport.*;
@Service
public class IEmailService implements EmailService {
/**
* 发送简单的邮件信息
* @param sender
* @param theme
* @param content
* @param recipient
* @return
*/
@Override
public void sendAttachmentMail(EmailEntity sender, String theme, String content,String recipient) throws MessagingException {
Session emailConfig = emailConfig(sender); //用户基本配置信息
MimeMessage message = new MimeMessage(emailConfig); // 加载发件人信息地址
message.setFrom(new InternetAddress(sender.getSender())); // 设置邮件的发件人
message.setRecipients(Message.RecipientType.TO, recipient); // 设置收件人
message.setSubject(theme); // 设置邮件标题
message.setSentDate(new Date()); //设置邮件发送日期
message.setContent(content, sender.getFormat()); // 设置邮件内容和格式
// 5、发送邮件
send(message);
}
/**
* 发送带附件的邮件信息
* @param sender
* @param theme
* @param content
* @param filePath
* @param recipient
* @return
*/
@Override
public void sendAttachment(EmailEntity sender, String theme, String content, List<String> filePath,String recipient) throws MessagingException, UnsupportedEncodingException {
Session emailConfig = emailConfig(sender); //用户基本配置信息
emailConfig.setDebug(true); // 用session为参数定义消息对象
MimeMessage message = new MimeMessage(emailConfig); // 加载发件人信息地址
message.setFrom(new InternetAddress(sender.getSender())); // 设置邮件的发件人
message.setRecipients(Message.RecipientType.TO, recipient); // 设置收件人
message.setSubject(theme); // 设置邮件标题
Multipart multipart = new MimeMultipart(); // 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件
BodyPart contentPart = new MimeBodyPart(); // 设置邮件的文本内容
contentPart.setContent(content, sender.getFormat()); // 设置邮件内容和格式
multipart.addBodyPart(contentPart); //添加身体部分
// 附件部分
contentPart = new MimeBodyPart();
// 设置要发送附件的文件路径
DataSource source = new FileDataSource("C:\\Users\\31034\\Desktop\\人员信息模板 (1).xlsx");
contentPart.setDataHandler(new DataHandler(source));
// 处理附件名称中文(附带文件路径)乱码问题
contentPart.setFileName(MimeUtility.encodeText("人员信息模板 (1).xlsx"));
multipart.addBodyPart(contentPart);
message.setContent(content, sender.getFormat()); // 设置邮件内容和格式
message.setSentDate(new Date()); //设置邮件发送日期
message.setContent(multipart);
// 5、发送邮件
send(message);
}
/**
* email初始化配置
* @param email
* @return
*/
public static Session emailConfig(EmailEntity email){
//1.配置email
Properties props = new Properties();
props.setProperty("mail.host", email.getServer()); // 设置邮箱服务器
props.setProperty("mail.transport.protocol", email.getProtocol()); // 设置邮箱发送的协议
props.setProperty("mail.smtp.timeout", email.getTimeout()); //配置邮箱发送超时
props.setProperty("mail.smtp.auth", email.getAuth()); // 设置认证方式
// 2、创建认证对象
Authenticator authenticator = new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(email.getSender(), email.getCode()); //邮箱账号的授权码
}
};
// 3、创建会话对象session
Session session = Session.getInstance(props, authenticator);
return session;
}
}
4、controller调用层
package common.projects.develop.controller;
import common.projects.develop.annotation.PassToken;
import common.projects.develop.entity.EmailEntity;
import common.projects.develop.service.EmailService;
import common.projects.develop.util.ResultEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.mail.MessagingException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
@RestController
@RequestMapping(value = "email")
@CrossOrigin
public class EmailController {
@Autowired
private EmailService emailService;
@PassToken
@PostMapping(value = "/sendAttachmentMail")
public ResultEntity sendAttachmentMail() throws MessagingException {
EmailEntity emailEntity = new EmailEntity("haoyaofeng2020@163.com","smtp.163.com","SMTP","true","text/html;charset=utf-8","25000","VNCBGTYASKDOTBYF");
emailService.sendAttachmentMail(emailEntity,"你好啊","我是你的小可爱","1824958506@qq.com");
return new ResultEntity();
}
@PassToken
@PostMapping(value = "/sendAttachment")
public ResultEntity sendAttachment() throws MessagingException, UnsupportedEncodingException {
EmailEntity emailEntity = new EmailEntity("haoyaofeng2020@163.com","smtp.163.com","SMTP","true","text/html;charset=utf-8","25000","VNCBGTYASKDOTBYF");
List list = new ArrayList();
emailService.sendAttachment(emailEntity,"你好啊","<!DOCTYPE>\"+\"<div bgcolor='#f1fcfa' style='border:1px solid #d9f4ee; font-size:14px; line-height:22px; color:#005aa0;padding-left:1px;padding-top:5px; padding-bottom:5px;'><span style='font-weight:bold;'>温馨提示:</span>\"\n" +
" + \"<div style='width:950px;font-family:arial;'>欢迎使用,您的注册码为:<br/><h2 style='color:green'>\"+yzm+\"</h2><br/>本邮件由系统自动发出,请勿回复。<br/>感谢您的使用。<br/></div>\"\n" +
" +\"</div>",list,"1824958506@qq.com");
return new ResultEntity();
}
}
实现大致就是这样,支持发送内容为富文本生成的html代码块和附件同时发送;复制即可运行