使用java编程的方式发送邮件

最近在写一个项目,里面使用到了ak\sk,使用短信发送需要钱,想到可以使用邮箱发送。以下是通过编写java代码使用qq邮箱发送邮件的过程,包含踩坑,仅供参考。

想要通过代码使用qq邮箱发送邮件,首先要去qq邮箱中开启服务并获取授权码。

一直下滑,找到下面的位置

 在安全设置里面可以开启服务和获取授权码。

 

POP3:Post Office Protocol的简称,是用来接受电子邮件的

IMAP:Internet Mail Access Protocol开启了IMAP后,您在电子邮件客户端收取的邮件仍然保留在服务器上,同时在客户端上的操作都会反馈到服务器上,如:删除邮件,标记已读等,服务器上的邮件也会做相应的动作。

SMTP :是Simple Mail Transfer Protocol,即简单邮件传输协议。发送邮件一般用的是 SMTP 服务。

我们这里就是要开通SMTP服务来发送邮件。

相关服务的默认端口号和常用地址如下:

添加依赖:

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

 

配置文件:

spring:
  mail:
    host: smtp.qq.com #配置 SMTP 服务器地址
    port: 465 #SMTP 服务器的端口
    username: xxxxxxxx@qq.com #配置邮箱用户名
    password: xxxxxxxx #配置密码,不是你邮箱密码,而是刚刚申请到的授权码
    default-encoding: UTF-8 #默认的邮件编码
    properties:
      mail:
        protocol: smtp
        debug: true  #表示开启 DEBUG 模式,这样,邮件发送过程的日志会在控制台打印出来,方便排查错误
        smtp:
          socketFactoryClass: javax.net.ssl.SSLSocketFactory #配饰 SSL 加密工厂
          socketFactory:
            port: 465 
          ssl:
            enable: true

代码:

@Resource
    private JavaMailSender javaMailSender;

@GetMapping("test")
    public void test(){
        SimpleMailMessage message = new SimpleMailMessage();
        message.setSubject("这是一封获取secretKey邮件");
        message.setFrom("1504126196@qq.com");
        message.setTo("1932641979@qq.com");
        message.setSentDate(new Date());
        message.setText("你的secretKey为: hjfkafklasjfoiduajsoifjeiouwofinfiochdwfw\n请妥善保管。");
        javaMailSender.send(message);
}

注意:JavaMailSender必须使用自动注入,才能用到配置文件中的配置,如果是自己new JavaMailSenderImpl,需要将配置文件中的配置通过set进行设置。不然会报Couldn't connect to host, port: localhost, 25; timeout -1;错误。 

我这里是使用web进行访问,启动项目后,在浏览器中访问localhost:8124/api/user/test就会发送邮件。控制台打印如下信息,则发送成功。

也可以在自己邮箱中查看

 对方邮箱收到的信息如下:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值