java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java邮箱发送

基于Java实现QQ邮箱发送工具类

作者:大白猫~

我们在日常开发中,需要实现一个对邮箱的发送,今天就实现邮箱的发送工具类,只需要一些注册邮箱之后的配置即可,感兴趣的小伙伴可以了解下

我们在日常开发中,需要实现一个对邮箱的发送,今天就实现邮箱的发送工具类,只需要一些注册邮箱之后的配置即可,我这边使用的是qq邮箱

0.加上依赖

<!--邮箱-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>

1.配置yml文件

需要到官网上去注册,链接地址:https://mail.qq.com/

spring:                         # Spring Boot应用程序配置的根节点
   mail:                        # 邮件相关配置
    username:                   # 你自己的QQ邮箱的用户名,需要填写你的QQ邮箱地址
    password:                   # 你自己的QQ邮箱的密钥/密码,需要填写你的QQ邮箱登录密码
    host: smtp.qq.com            # SMTP服务器主机名,这里设置为QQ邮箱的SMTP服务器
    port: 465                   # SMTP服务器端口,通常情况下使用SSL的SMTP协议使用465端口
    protocol: smtp              # 使用SMTP协议发送邮件
 
    properties:                 # 邮件相关的属性配置
      mail:                     # 邮件协议属性配置
        smtp:                   # SMTP协议属性配置
          ssl:                  # SSL/TLS属性配置
            enable: true         # 启用SSL,表示使用加密传输邮件
          auth: true             # 启用SMTP身份验证,需要提供用户名和密码
          starttls:             # STARTTLS属性配置,用于在未加密连接上启用TLS
            enable: true        # 启用STARTTLS
            required: true      # 要求必须使用STARTTLS
          socketFactory:        # Socket工厂属性配置,用于SSL连接
            port: 465           # SSL连接的端口,与SMTP服务器的端口一致
            class: javax.net.ssl.SSLSocketFactory  # 使用的Socket工厂类,通常用于SSL连接
 
# 请确保填写你自己的QQ邮箱地址和密码,以及确保QQ邮箱允许使用SMTP服务来发送邮件

2.写一个发送邮箱工具类

@Component
public class MailUtil {
 
    private static MailUtil INSTANCE = new MailUtil();
 
    @Resource
    JavaMailSender mailSender;
 
    @Resource
    JavaMailSender javaMailSender;
 
    @PostConstruct
    public void init(){
        INSTANCE.mailSender = mailSender;
    }
 
    /**
     * 发送简单邮件
     *
     * @param subject 主题
     * @param content 内容
     * @param from 发件人
     * @param to      收件人
     */
    public void sendSimpleMail(String subject,String content,String from,String[] to){
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom(from);
        message.setTo(to);
        // 主题
        message.setSubject(subject);
        // 邮件正文
        message.setText(content);
        message.setSentDate(new Date());
        // 发送邮件
        INSTANCE.mailSender.send(message);
    }
    public void sendMimeMail(String subject,String content,String from,String[] to) throws MessagingException {
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        // 构建一个邮件对象
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);
        // 设置邮件主题
        helper.setSubject(subject);
        // 设置邮件发送者,这个跟application.yml中设置的要一致
        helper.setFrom(from);
        helper.setTo(to);
        // 设置邮件发送日期
        helper.setSentDate(new Date());
        // 设置邮件的正文 true:是html文件
        helper.setText(content,true);
        // 发送邮件
        javaMailSender.send(mimeMessage);
    }
 
}

3.编写controller控制器接口

@RestController
@Api(tags = "邮箱发送")
@RequestMapping("/mail")
public class MailServlet {
    @Resource
    private MailUtil mailUtil;
 
    @PostMapping("/to")
    @ApiOperation("发送邮件")
    @ApiImplicitParams({@ApiImplicitParam(name = "subject", value = "邮件主题"), @ApiImplicitParam(name = "content", value = "邮件内容")
            , @ApiImplicitParam(name = "from", value = "发送邮件的QQ邮箱"), @ApiImplicitParam(name = "to", value = "要发送到的QQ邮箱,用,隔开")})
    public R to(String subject, String content, String from, String to) {
        String[] split = to.split(",");
        try {
            mailUtil.sendSimpleMail(subject, content, from, split);
            return R.ok("发送成功");
        } catch (Exception e) {
            e.fillInStackTrace();
            return R.fail("发送失败");
        }
    }
 
    @PostMapping("/tof")
    @ApiOperation("发送富文本邮件")
    @ApiImplicitParams({@ApiImplicitParam(name = "subject", value = "邮件主题"), @ApiImplicitParam(name = "content", value = "邮件内容<html>格式")
            , @ApiImplicitParam(name = "from", value = "发送邮件的QQ邮箱"), @ApiImplicitParam(name = "to", value = "要发送到的QQ邮箱,用,隔开")})
    public R tof(String subject, String content, String from, String to) {
        String[] split = to.split(",");
        try {
            mailUtil.sendMimeMail(subject, content, from, split);
            return R.ok("发送成功");
        } catch (Exception e) {
            e.fillInStackTrace();
            return R.fail("发送失败");
        }
    }
}

以上就是基于Java实现QQ邮箱发送工具类的详细内容,更多关于Java邮箱发送的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文