SpringBoot mail(邮箱)

本文介绍了如何使用SpringBoot集成163邮箱进行邮件发送,包括添加Maven依赖、配置YML文件(如SMTP服务器、端口、授权码等)、设置邮件超时时间以及核心的Java代码实现,包括发送简单邮件和带有附件的邮件。同时,文章提到了需要在邮箱客户端设置中开启SMTP服务并获取授权码。
摘要由CSDN通过智能技术生成

maven

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

yml配置

  mail:
    host: smtp.163.com # 发件服务器地址,不同邮件平台地址不同
    port: 25 #常用邮件端口25、109、110、143、465、995、993、994 如果开启了SSL安全则使用对应的端口号,25为非加密端口号
    username: xxx@163.com #发送邮件的账号
    password: xxxx#发送邮件账号的授权码,这里的授权码不是验证码.需要到邮箱
    default-encoding: utf-8 #设置编码
    properties: # 设置邮件超时时间防止服务器阻塞
      timeout: 5000
      connection-timeout: 5000
      write-timeout: 5000

     核心代码

package com.example.rabbitmq_demo.email;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.MailException;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;

/**
 * @program: rabbitMQ_demo
 * @description:
 * @author: Zeke
 * @create: 2023-07-19 10:11
 **/
@Service
@Slf4j
public class Mail163impl implements Mail{

    @Autowired
    private JavaMailSender mailSender;

    @Value("${spring.mail.username}")
    String sendUserName;

    String[] emails = { "你要发送的邮箱1","你要发送的邮箱2" }; //多发

    spring email="你要发送的邮箱1";  //单发

    

    public Boolean sendEMail(String Subject) {
        try {
            SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
            simpleMailMessage.setFrom(sendUserName); //设置发送邮件账号
            simpleMailMessage.setTo(emails); //设置接收邮件的人,可以多个
            simpleMailMessage.setSubject("eMailCmd"); //设置发送邮件的主题
            simpleMailMessage.setText(Subject); //设置发送邮件的内容
            mailSender.send(simpleMailMessage);
            return true;
        } catch (MailException e) {
            log.error("邮件发送失败!");
            return false;
        }
    }
}

测试


    @Autowired
    Mail mail;



    @Test
    void contextLoads() {

        Boolean aBoolean = mail.sendEMail("521");
        System.out.println(aBoolean);

    }


找到设置==>客户端设置(不同邮箱名字不同,163邮箱则是POP3/SMTP/IMAP),就会看到以下页面,开启需要使用的服务即可,我们这边使用的是IMPAP/SMTP


新增授权码,点击新增授权码,按照提示扫码发送短信,或者手动发送短信即可。然后就可以看到您新的授权码了。
新增授权码后,记住授权码后面要用。

  

升级带附件

  
    @Autowired
    private JavaMailSender mailSender;

    @Value("${spring.mail.username}")
    String sendUserName;

    String[] emails = { "xxxx@gmail.com" };   // 发送到
    String[] cc = { "xxxx@gmail.com","xxxxx@163.com" };  //抄送

  private String content ="<img src='https://www.hahagu.com/upload/a/202004/b441cc27bfd828d4490a6722b954615b.jpg'/><a href='https://www.baidu.com/'>点开</a><H1>\"写不肉真的帅\"</H1>";
    private  String pathname="D:\\czy\\cs\\微信图片_20230628172724.jpg";

    private String attachmentFilename="帅哥.jpeg";
    @Override
    public Boolean sendEMail2() {
        try {
            MimeMessage message = mailSender.createMimeMessage();
            //第2个参数:是否允许添加多部件
            MimeMessageHelper helper = new MimeMessageHelper(message,true);
            helper.setFrom(sendUserName);
            helper.setTo(emails);
            helper.setSubject("eMailCmd");
            helper.setCc(cc);
//            helper.setText(content);
            //第2个参数:是否解析html
            helper.setText(content,true);

            //添加附件
            File file = new File(pathname);
            //helper.addAttachment(file.getName(),file);
            helper.addAttachment(attachmentFilename,file);

            mailSender.send(message);
            return true;
        } catch (MessagingException e) {
            e.printStackTrace();
        }
        return false
                ;
    }
}

//        String[] to: 这是一个字符串数组,表示邮件的收件人地址。您可以将多个收件人的邮箱地址放在这个数组中,每个邮箱地址之间使用逗号分隔。
//
//        String from: 这是一个字符串,表示邮件的发件人地址。
//
//        String subject: 这是一个字符串,表示邮件的主题。
//
//        String text: 这是一个字符串,表示邮件的正文内容。
//
//        String[] cc: 这是一个字符串数组,表示邮件的抄送收件人地址。和收件人一样,您可以将多个抄送收件人的邮箱地址放在这个数组中。
//
//        String[] bcc: 这是一个字符串数组,表示邮件的密送收件人地址。和收件人一样,您可以将多个密送收件人的邮箱地址放在这个数组中。
//
//        void setTo(String[] to): 这是一个方法,用于设置邮件的收件人地址。
//
//        void setFrom(String from): 这是一个方法,用于设置邮件的发件人地址。
//
//        void setSubject(String subject): 这是一个方法,用于设置邮件的主题。
//
//        void setText(String text): 这是一个方法,用于设置邮件的正文内容。
//
//        void setCc(String[] cc): 这是一个方法,用于设置邮件的抄送收件人地址。
//
//        void setBcc(String[] bcc): 这是一个方法,用于设置邮件的密送收件人地址。

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zeke Cao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值