【java】发送邮件

1、导包

<!-- 导入mail的依赖包 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

 

2、配置基础参数

#配置发送邮件的基本参数
spring.mail.host=smtp.qq.com
#你的邮箱地址 spring.mail.username
=xxxx@qq.com
#你的邮箱授权码 spring.mail.password
=xxxxxxxxx spring.mail.port=587 spring.mail.default-encoding=utf-8 spring.mail.protocol=smtp #开启加密验证 spring.mail.properties.mail.smtl.ssl.enable=true

3、编写发送代码

PS:在springboot 2.7.0版本中  JavaMailSenderImpl类 已经不在注册为Bean了,所以不能用@Autowired 注解 ,需要用@Resource注解 

@Resource
    JavaMailSenderImpl mailSender;

@Test
    void contextLoads() {
        SendSimpleMail();  //发送简单邮件
    }

    private void SendSimpleMail(){
        //JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
        SimpleMailMessage message = new SimpleMailMessage();
        message.setSubject("你好,这里是标题");
        message.setText("这里是内容");
        message.setTo("34@qq.com");
        message.setFrom("22@qq.com");

        mailSender.send(message);
        System.out.println("已执行发送方法");
    }

4、复杂邮件发送代码

 

//region
    private void SendComplexMail(){
        MimeMessage mimeMessage = mailSender.createMimeMessage();

        try {
            //使用MimeMessageHelper 组装邮件相关信息
            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);
            helper.setSubject("这是一封复杂邮件");

            //添加html格式的邮件正文 (第二个参数表示  这是一段html代码)
            helper.setText("<p style='color:red'>你好啊,欢迎使用复杂邮件发送</p>",true);

            //添加附件
            helper.addAttachment("1.jpg",new File("C:\\Users\\22079\\Desktop\\1.png"));

            //设置发送人  接收人
            helper.setTo("344@qq.com");
            helper.setFrom("22@qq.com");

        } catch (MessagingException e) {
            e.printStackTrace();
        }

        mailSender.send(mimeMessage);
        System.out.println("已执行发送方法");
    }
    //endregion

 

5、常见问题:

springboot Got bad greeting from SMTP host: smtp.qq.com, port: 465, response: [EOF]

参考:https://blog.csdn.net/SixthMagnitude/article/details/114173570

解决方法:
  如果使用端口为465,将protocol的smtp改为smtps
  将配置文件端口改为587,则可以使用smtp。
  均为SSL连接端口,因为qq不支持非SSL端口。
  以下是配置文件,重点在于protocal(视端口而定)和开启SSL(必须)

 

posted @ 2022-07-07 20:04  狼窝窝  阅读(93)  评论(0)    收藏  举报