最近公司Spring boot项目需要弄个邮箱提醒 然后在网上找了一些资料
方法1:使用 spring boot 依赖注解 JavaMailSender
这是本人实例 Demo 源码git地址
https://gitee.com/leichen_super/SendEmailDemo.git
主要的2部分:
yml文件配置
# 设置邮箱主机
spring.mail.host=smtp.qq.com
# 设置用户名
spring.mail.username=xxxxxx@qq.com
# 设置密码,该处的密码是QQ邮箱开启SMTP的授权码而非QQ密码
spring.mail.password=pwvtabrwxogxidac
# 设置是否需要认证,如果为true,那么用户名和密码就必须的,
# 如果设置false,可以不设置用户名和密码,当然也得看你的对接的平台是否支持无密码进行访问的。
spring.mail.properties.mail.smtp.auth=true
# STARTTLS[1] 是对纯文本通信协议的扩展。它提供一种方式将纯文本连接升级为加密连接(TLS或SSL),而不是另外使用一个端口作加密通信。
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
pom.xml 导入mail依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
方法2 :( 不需要在yml 文件配置 只需要加入依赖注解就可以 )
不废话直接贴源码 本人用是qq服务端
String subject, String text, String toUse 三个参数 因为这发送邮件我在很多地方都用到 所以定义3个入参分别是 邮件主题,邮件内容,收件人(这里收件人代码标红处我做了处理 可以传多个收件人 用 , 隔开即可)
import java.security.Security;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import org.springframework.stereotype.Service;
import com.sun.net.ssl.internal.ssl.Provider;
import com.wft.mgt.biz.MailBiz;import lombok.extern.log4j.Log4j2;
@Log4j2
@Service
public class MailBizImpl implements MailBiz {
private static MimeMessage message;@Override
public void sendEmail(String subject, String text, String toUser) throws MessagingException {
Security.addProvider(new Provider());
final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
//QQ邮箱服务器
String smtpHost="smtp.qq.com";
//邮箱用户名,即QQ账号
final String username = "xxxxx@qq.com";
//邮箱授权码
final String password = "xxxxx";
//自己的邮箱
String from = "xxxxx@qq.com";
Transport transport;
InternetAddress[] address=null;
try {
List list = new ArrayList();
String []median=toUser.split(",");
for(int i=0;i<median.length;i++){
list.add(new InternetAddress(median[i]));
address =(InternetAddress[])list.toArray(new InternetAddress[list.size()]);
}
} catch (AddressException e) {
e.printStackTrace();
}
Properties props = new Properties();
props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
props.setProperty("mail.smtp.socketFactory.fallback", "false");
props.setProperty("mail.smtp.port", "465");
props.setProperty("mail.smtp.socketFactory.port", "465");
props.setProperty("mail.smtp.auth", "true");
props.put("mail.smtp.host",smtpHost);
props.put("mail.smtp.username", username);
props.put("mail.smtp.password", password);
Session session = Session.getInstance(props, new Authenticator() {
//身份认证
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.setRecipients(Message.RecipientType.TO,address);
message.setSubject(subject);//邮箱主题
message.setSentDate(new Date());
message.setText(text);//邮箱内容
transport = session.getTransport("smtp");
transport.connect(smtpHost, username, password);
try {
transport.send(message);
log.info("email has been success" );
} catch (Exception e) {
log.info("email has been error" );
}
}
}
最后记得pom.xml文件导入mial依赖注解