美文网首页
Java之springboot邮件发送

Java之springboot邮件发送

作者: 兰觅 | 来源:发表于2020-09-29 20:35 被阅读0次
一.获取授权码

在此以qq邮箱为例


进入设置界面

开启IMAP/SMTP服务


开启IMAP/SMTP服务
根据操作用手机号发送短信,获取授权码
授权码

在项目中引入依赖:pom.xml

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

在配置文件中填写参数:application.properties
username为邮箱账号,这里的password密码是指授权码

spring.mail.host=smtp.qq.com
spring.mail.username=xxxx@qq.com
spring.mail.password=授权码
spring.mail.protocol=smtp
spring.mail.default-encoding=UTF-8

或者
在application.yml中配置

 mail:
    host: smtp.qq.com
    username: xxxx@qq.com
    password: 授权码
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true
            required: true
    default-encoding: UTF-8

以上操作参考如下:报空指针
操作参考1

修改如下:

public class testSendEmail{

    public JavaMailSenderImpl JavaMailSender() {
        JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
        mailSender.setHost("smtp.qq.com");
        mailSender.setUsername("xxxx@qq.com");
        mailSender.setPassword("授权码");
        return mailSender;
    }
    //一个简单的邮件,只有text信息
    /**
     * @Description:
     * @Param: [subject:标题, text:内容, email:接收人的邮件地址]
     * @return: void
     * @Author: 你自己
     * @Date: 2020/2/27
     */
    public void SendSimpleEmail(String subject, String text, String email) {
        JavaMailSenderImpl javaMailSender = JavaMailSender();
        SimpleMailMessage mailMessage = new SimpleMailMessage();
        mailMessage.setSubject(subject); //邮件的主题
        mailMessage.setText(text);
        mailMessage.setTo(email); //发送给谁
        mailMessage.setFrom(Objects.requireNonNull(javaMailSender.getUsername())); //谁发送的
        javaMailSender.send(mailMessage);
    }

    /**
     * @Description:
     * @Param: [subject:标题, text:内容, html,Boolean html:是否进行html解析
     * email:接收人的邮件地址, attachmentMap:附件的名称和文件路径]
     * @return: void
     * @Author: 你自己
     * @Date: 2020/2/27
     */
    public void SendMimeEmail(String subject, String text, Boolean html,
                              String email, Map<String, String> attachmentMap) throws MessagingException {
        JavaMailSenderImpl javaMailSender = JavaMailSender();
        //一个复杂的邮件`
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        //进行组装
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, html);
        helper.setSubject(subject);
        helper.setText(text, html);

        //附件
        if (attachmentMap != null) {
            Iterator<Map.Entry<String, String>> iterator = attachmentMap.entrySet().iterator();
            //map.entrySet()得到的是set集合,可以使用迭代器遍历
            while (iterator.hasNext()) {
                Map.Entry<String, String> entry = iterator.next();
                helper.addAttachment(entry.getKey(),
                        //附件名称,要写好文件的后缀,不要少写和写错
                        new File(entry.getValue()));
                //附件的文件地址,可以写绝对路径,若是相对路径,如./1.png,代表的是resources下的1.png
            }
        }
        helper.setTo(email); //发送给谁
        helper.setFrom(Objects.requireNonNull(javaMailSender.getUsername())); //谁发送的
        javaMailSender.send(mimeMessage);
    }
}

编写测试方法:

public class testEmail {

    @Autowired
    private JavaMailSender javaMailSender;

    @Test
    public void testSend() throws MessagingException{
        testSendEmail sendEmail=new testSendEmail();
        sendEmail.SendSimpleEmail("测试邮件是否能发送成功","test成功!你真棒!哈哈哈哈哈,猜猜我是谁??","aaaa@163.com");//第一个方法
    }
效果1

发送文件:

    @Test
    public void Test1() throws MessagingException {
        testSendEmail e=new testSendEmail();
//        e.SendSimpleEmail("又是崭新的一天","天气真好,要开心要快乐","aaaa@163.com");
        HashMap<String, String> map = new HashMap<>(); //定义附件
//        map.put("1.png","./1.png");  //相对路径,相对于resources目录下
        map.put("2.png","H:\\Desktop\\testInfo\\testImage\\timg (1).jpg"); //绝对路径
        e.SendMimeEmail("test标题","testContent",true,"aaaa@163.com",
                map);

    }
效果2

相关文章

  • Java之springboot邮件发送

    一.获取授权码 在此以qq邮箱为例 开启IMAP/SMTP服务 根据操作用手机号发送短信,获取授权码 在项目中引入...

  • SpringBoot 系列之邮件发送姿势介绍

    SpringBoot系列之邮件发送姿势介绍 邮件发送,在实际的项目开发中,可能用的不是特别多,如果没有特定的需求,...

  • springBoot之邮箱发送邮件

    导入依赖 邮箱发送工具类 常用邮件服务器地址

  • SpringBoot邮件发送

    这篇文章介绍springboot的邮件发送。 由于很简单就没有分出server和imp之类,只是在controll...

  • SpringBoot 发送邮件

    # 依赖 # 配置 # 发送简单文本邮件 # 发送html邮件 # 使用邮件模板发送邮件 添加依赖 配置 新建ht...

  • springboot 发送邮件

    邮件的依赖: 定义邮件的服务类: 这里我们实例化MailService 测试一下: test-applicatio...

  • SpringBoot发送邮件

    简述 在日常工作开发中,发送邮件功能有时需要我们去开发使用,这里首先介绍以下与发送接受邮件相关的一些协议: 发送邮...

  • SpringBoot 发送邮件

    学习目标 快速掌握邮件业务类的核心逻辑和企业邮件的日常服务。 快速查阅 专题阅读:《SpringBoot 布道系列...

  • springBoot 发送邮件

    全局配置文件: # JavaMailsender 邮件发送的配置 spring . mail .host-smtp...

  • SpringBoot发送邮件

    maven配置 application.yml配置 邮件配置工具类 调用发送邮件 成功! 关注公众号回复“书籍”就...

网友评论

      本文标题:Java之springboot邮件发送

      本文链接:https://www.haomeiwen.com/subject/sdweuktx.html