SpringBoot学习——springboot整合email & springboot整合阿里云短信服务

目录

  • 引出
  • springboot整合email
    • 配置邮箱
    • 导入依赖
    • application.yml配置
    • email业务类
    • 测试类
  • springboot整合阿里云短信服务
    • 申请阿里云短信服务
    • 测试短信服务
    • 获取阿里云的accessKey
    • springboot整合阿里云短信
      • 导包
      • 工具类
  • 总结

引出


1.springboot整合email,qq邮箱,特点免费;
2.springboot整合阿里短信服务,100条免费;
3.后续应用,可以用在登陆业务上,比如邮箱登陆,短信登陆;

springboot整合email

配置邮箱

登录邮箱服务器: 登录QQ邮箱

SpringBoot学习——springboot整合email & springboot整合阿里云短信服务_第1张图片

SpringBoot学习——springboot整合email & springboot整合阿里云短信服务_第2张图片

SpringBoot学习——springboot整合email & springboot整合阿里云短信服务_第3张图片

SpringBoot学习——springboot整合email & springboot整合阿里云短信服务_第4张图片

SpringBoot学习——springboot整合email & springboot整合阿里云短信服务_第5张图片

SpringBoot学习——springboot整合email & springboot整合阿里云短信服务_第6张图片

后面要用到这个授权码key

SpringBoot学习——springboot整合email & springboot整合阿里云短信服务_第7张图片

导入依赖


        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-mailartifactId>
        dependency>

application.yml配置

SpringBoot学习——springboot整合email & springboot整合阿里云短信服务_第8张图片

SpringBoot学习——springboot整合email & springboot整合阿里云短信服务_第9张图片

email业务类

接口

package com.tianju.auth.service;

public interface IEmailService {
    /**
     * 发送右键
     * @param to 邮件接收方
     * @param subject 邮件主题
     * @param content 邮件内容
     */
    void sendEmail(String to,String subject,String content);
}

实现

package com.tianju.auth.service.impl;

import com.tianju.auth.service.IEmailService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Date;

@Service
@Slf4j
public class EmailServiceImpl implements IEmailService {

    @Value("${spring.mail.username}")
    private String from;

    @Resource
    private JavaMailSender javaMailSender;

    @Override
    public void sendEmail(String to, String subject, String content) {

        SimpleMailMessage mailMessage = new SimpleMailMessage();
        mailMessage.setSubject(subject);
        mailMessage.setTo(to);
        mailMessage.setText(content);
        mailMessage.setSentDate(new Date());
        mailMessage.setFrom(from);

        javaMailSender.send(mailMessage);

        log.debug("在{}发送一条邮件{}给{}",mailMessage.getSentDate(),mailMessage.getText(),mailMessage.getTo());

    }
}

测试类

package com.tianju.auth.service.impl;

import com.tianju.auth.service.IEmailService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import javax.xml.ws.soap.Addressing;

import java.util.UUID;

import static org.junit.Assert.*;

@SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class)
public class EmailServiceImplTest {

    @Autowired
    private IEmailService emailService;

    @Test
    public void sendEmail() {
        emailService.sendEmail("[email protected]", "我是老王,我在测试代码", UUID.randomUUID().toString());
    }
}

springboot整合阿里云短信服务

申请阿里云短信服务

短信服务 (aliyun.com)

SpringBoot学习——springboot整合email & springboot整合阿里云短信服务_第10张图片

测试短信服务

SpringBoot学习——springboot整合email & springboot整合阿里云短信服务_第11张图片
SpringBoot学习——springboot整合email & springboot整合阿里云短信服务_第12张图片

SpringBoot学习——springboot整合email & springboot整合阿里云短信服务_第13张图片
SpringBoot学习——springboot整合email & springboot整合阿里云短信服务_第14张图片

SpringBoot学习——springboot整合email & springboot整合阿里云短信服务_第15张图片

进行测试

SpringBoot学习——springboot整合email & springboot整合阿里云短信服务_第16张图片

SpringBoot学习——springboot整合email & springboot整合阿里云短信服务_第17张图片

调用结果

SpringBoot学习——springboot整合email & springboot整合阿里云短信服务_第18张图片

成功接收短信

SpringBoot学习——springboot整合email & springboot整合阿里云短信服务_第19张图片

获取阿里云的accessKey

SpringBoot学习——springboot整合email & springboot整合阿里云短信服务_第20张图片

SpringBoot学习——springboot整合email & springboot整合阿里云短信服务_第21张图片

springboot整合阿里云短信

导包

        
        <dependency>
            <groupId>com.aliyungroupId>
            <artifactId>aliyun-java-sdk-coreartifactId>
            <version>4.5.3version>
        dependency>

工具类

package com.tianju.auth.util;

import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import net.minidev.json.JSONObject;


import java.util.HashMap;
import java.util.Map;
import java.util.Random;

public class SMSUtil {

    private static String AccessIdKey = "获取的keyID";
    private static String AccessKeySecret = "获取的KeySecret";

    public static void send(String tel,String code) {
        DefaultProfile profile = DefaultProfile.getProfile(
                "cn-hangzhou",
                AccessIdKey, //AccessIdKey
                AccessKeySecret); //AccessKey Secret
        IAcsClient client = new DefaultAcsClient(profile);
        CommonRequest request = new CommonRequest();
        request.setSysMethod(MethodType.POST);
        //下面这3个不要改动
        request.setSysDomain("dysmsapi.aliyuncs.com");
        request.setSysVersion("2017-05-25");
        request.setSysAction("SendSms");
        //接收短信的手机号码
        request.putQueryParameter("PhoneNumbers",tel);//此处写电话号码
        //短信签名名称
        request.putQueryParameter("SignName","阿里云短信测试");
        //短信模板ID
        request.putQueryParameter("TemplateCode","SMS_154950909");
        //短信模板变量对应的实际值 ${code} 中的值
        Map<String,String> param = new HashMap<>(2);
        param.put("code", String.valueOf(code)); //写入的短信内容,验证码
        request.putQueryParameter("TemplateParam", JSONObject.toJSONString(param));
        try {
            CommonResponse response = client.getCommonResponse(request);
            System.out.println(response.getData());
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        int i = new Random().nextInt(80000) + 10000;
        System.out.println(i); // 35054
        SMSUtil.send("xxxx", "392712");
    }

}

SpringBoot学习——springboot整合email & springboot整合阿里云短信服务_第22张图片


总结

1.springboot整合email,qq邮箱,特点免费;
2.springboot整合阿里短信服务,100条免费;
3.后续应用,可以用在登陆业务上,比如邮箱登陆,短信登陆;

你可能感兴趣的:(SpringBoot,spring,boot,学习,阿里云,java)