spring发送邮件

我们思考一下.当我们使用某些邮件系统发邮件,使用的是邮件系统的客户端.那么我们使用spring发邮件或者说我们使用java发邮件是不是也需要建立一个客户端呢?答案当然是否定的,正如我们连接数据库一样.我们只需要搭建一个jdbc通道,然后输入告诉数据库服务我们的身份,就可以愉快的进行增删改查了.所以我们首先要做的一步是通过代码创建一个类似于jdbc的连接器.

在此之前,我们还有一个前置操作要配置,我们需要建立一个邮件链接,所以我们需要选择一个邮件客户端,并且配置一些内容.我选用的是163邮箱.

 需要开启邮箱的两个服务,POP3/SMTP和IMAP/SMTP.这里大概说下.SMTP服务是发送邮件协议,而POP3和IMAP是接收邮件协议.另外开启这两个服务可能还需要一个密匙.现在大部分的邮件客户端都需要.

 现在我们已经做好了前置操作.下边开始编码

1 我们需要引入javax的mail包.此处我是用的maven构建,所以直接贴出来依赖

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

此处需要说明,如果导入这个jar后,启动项目发现缺少包之类的错误,请耐心百度下.多数是因为你的依赖包不够,因为我使用的springboot项目,springboot已经默认导入了很多包.

2 建立一个跟163邮件客户端打交道的连接

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.mail.javamail.JavaMailSenderImpl;

@Configuration
public class MailServer {
    @Bean
    public JavaMailSenderImpl mailSender() {
        JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
        mailSender.setHost("smtp.163.com");//指定用来发送Email的邮件服务器主机名
        mailSender.setPort(25);//默认端口,标准的SMTP端口
        mailSender.setUsername("zmj15237497836@163.com");//此处的用户名就是你的邮箱账号
        mailSender.setPassword("授权码也就是那个密匙");//就是刚刚设置的授权码
        return mailSender;
    }
}

通过@Configuration注解spring会将该类监听为配置类.对声明为bean的方法,进行配置bean.此处我们返回了一个JavaMailSenderImpl,这个实例则会被spring容器托管.我们就可以在别的地方注入这个bean

3 发送邮件

 @Autowired
    private JavaMailSenderImpl mailSender;
    
    @GetMapping("mail")
    public String sendMail() {//发送文本邮件
            SimpleMailMessage mailMessage = new SimpleMailMessage();
            mailMessage.setFrom("zmj15237497836@163.com");//你的邮箱账号,此处必须和连接对象中的邮箱账号一致
            mailMessage.setTo("asd974944918@qq.com");//发送给谁
            mailMessage.setSubject("spring发送邮件");//邮件主题
            mailMessage.setText("这是一封测试邮件");//邮件内容
            mailSender.send(mailMessage);
        return "ok";
    }
    
    @GetMapping("fjmail")
    public String sendMailfj() throws Exception{//发送带附件的邮件
        MimeMessage message = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message,true);//true表明这个消息是multipart类型的
        helper.setFrom("zmj15237497836@163.com");//发件人
        helper.setTo("asd974944918@qq.com");//收件人
        helper.setSubject("spring发送邮件带图片");//主题
        helper.setText("这是一封测试邮件");//正文
        FileSystemResource resource = new FileSystemResource("C:\Users\dfsn1\Pictures\商品图片\1.jpg");//此处我使用的本地的图片
        helper.addAttachment("一个图片.png", resource);//设置附件
        mailSender.send(message);
        return "ok";
    }

以上就是使用spring发送邮件

原文地址:https://www.cnblogs.com/zumengjie/p/11694650.html