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发送邮件