Spring Boot 发送邮件 源码(实例)

最近公司Spring boot项目需要弄个邮箱提醒 然后在网上找了一些资料 

方法1:使用 spring boot 依赖注解  JavaMailSender

这是本人实例 Demo 源码git地址

https://gitee.com/leichen_super/SendEmailDemo.git

主要的2部分:

yml文件配置


# 设置邮箱主机
spring.mail.host=smtp.qq.com
 
# 设置用户名
[email protected]
 
# 设置密码,该处的密码是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>
    <version>${spring-boot-mail.version}</version>
</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 = "[email protected]";
            //邮箱授权码
            final String password = "xxxxx";
            //自己的邮箱
            String from = "[email protected]";
            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依赖注解

猜你喜欢

转载自blog.csdn.net/Chen_XiRan/article/details/86489231