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

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

现在我们已经做好了前置操作.下边开始编码
1 我们需要引入javax的mail包.此处我是用的maven构建,所以直接贴出来依赖
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</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发送邮件