JavaMail

在用户登录注册或者进行其他操作时,除了手机号码还可以提供另一种处理方式,就是使用JavaMail,并且该方式也是完全免费的。

需要在不同邮箱提供商的设置POP3/SMTP/IMAP中开启IMAP/SMTP和POP3/SMTP服务

使用

结合springboot项目使用

依赖

<!-- 导入javamail的坐标 -->
<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
</dependency>

<!-- 简化实体类      -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

创建javamail.yml

javamail:
  smtp_host: smtp.163.com
  username: 具体邮箱@163.com
  password: 授权码,并不是邮箱密码,在邮箱设置处获取
  # 和username使用同一个邮箱地址即可
  from: 具体邮箱@163.com

创建配置类

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

/**
 * @author :almostTao
 * @date :Created in 2020/4/9 16:31
 */
// 简化getters setters
@Data
// 指定配置文件名称
@PropertySource(value = "classpath:javamail.yml")
// 默认使用application.properties 文件 prefix指定前缀
@ConfigurationProperties(prefix = "javamail")
// 表名该类是一个配置类
@Configuration
public class JavaMailConfig {
    public String smtp_host ;
    public String username ;
    public String password ;
    public String from ;
}

创建工具类

/**
 * @author :almostTao
 * @date :Created in 2020/4/9 16:19
 */
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import xyz.taoqz.config.JavaMailConfig;

import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
import java.util.Properties;

// 启动时可以被spring扫描并添加到容器中
@Component
public class MailUtil {

    // 注入配置类
    @Autowired
    private JavaMailConfig javaMailConfig;

    // 发送邮件主要方法
    public void sendMail(String to, String subject, String text) throws Exception {
        // 1 准备发送邮件需要的参数
        Properties props = new Properties();
        // 设置主机地址 smtp.qq.com smtp.126.com smtp.163.com
        props.put("mail.smtp.host",javaMailConfig.smtp_host);
        // 是否打开验证:只能设置true,必须打开
        props.put("mail.smtp.auth", true);

        // 2 连接邮件服务器
        Session session = Session.getDefaultInstance(props);
        // 3 创建邮件信息
        MimeMessage message = new MimeMessage(session);

        // 4 设置发送者
        InternetAddress fromAddress = new InternetAddress(javaMailConfig.from);
        message.setFrom(fromAddress);
        // 5 设置接收者
        InternetAddress toAddress = new InternetAddress(to);
        // to:直接接收者 cc:抄送 bcc暗送
        message.setRecipient(RecipientType.TO, toAddress);
        // 6 设置主题
        message.setSubject(subject);
        // 7 设置正文
        message.setText(text);

        // 设置HTML方式发送
        //message.setContent(text, "text/html;charset=utf-8");

        // 8 发送:坐火箭
        Transport transport = session.getTransport("smtp");// 参数不能少,表示的是发送协议
        // 登录邮箱,此处的密码是授权码
        transport.connect(javaMailConfig.username,javaMailConfig.password);
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();

        System.out.println("ok");
    }

}

测试

@SpringBootTest
class JavamailDemoApplicationTests {

    @Test
    void contextLoads() {
    }

    @Autowired
    private MailUtil mailUtil;

    @Test
    public void demo(){
        try {
            mailUtil.sendMail("xxx@qq.com", "激活测试", "test");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Autowired
    private JavaMailConfig javaMailConfig;

    @Test
    public void demo2(){
        System.out.println(javaMailConfig);
    }

}
Copyright © TaoQZ 2019 all right reserved,powered by Gitbook作者联系方式:taoqingzhou@gmail.com 修订时间: 2024-11-19 17:25:42

results matching ""

    No results matching ""

    results matching ""

      No results matching ""