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

  • 相关阅读:
    找水王
    第十四周学习记录
    第十三周学习记录
    第十二周学习记录
    序列化
    哪个元素出发事件
    阻止默认行为-event.preventDefault();
    阻止时间冒泡 -event.stopPropagation();
    HTML5的LocalStorage和sessionStorage的使用 -缓存
    同步加载、异步加载、延迟加载
  • 原文地址:https://www.cnblogs.com/zumengjie/p/11694650.html
Copyright © 2020-2023  润新知