栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java使用阿里云邮箱发送邮件

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java使用阿里云邮箱发送邮件

1. 需求

现在需要在用户注册的时候,注册时给用户发送一条注册成功的邮件(异步发送, @Async注解)
在用户修改密码的时候,发送一条验证码邮件(1分钟内只能发送一次,15分钟有效),并实现密码修改

2. 实现 2.1 依赖
 

     com.aliyun
     aliyun-java-sdk-core
     3.0.0
 
 
     com.aliyun
     aliyun-java-sdk-dm
     3.1.0
 
2.2 UserServiceimpl
    @Resource
    private ThreadTasks threadTasks;


//注册
 @Override
  public String register(RegisterUserVo vo) {

  		//user入库
  		// .....
  		//发送邮件(异步发送)
      threadTasks.sendRegisteMail(sysUser);
      }

//验证邮箱  并发送验证码邮件
  @Override
    public String verify(String email) {
        //1.判断账户id是否已存在 不存在则创建
        int count = userMapper.checkUserExist(email);
        if (count == 0) {
            return "用户名或密码错误,请重新输入!";
        }
        //判断1分钟内是否发送过验证码
        String s = redisTemplate.opsForValue().get(RedisConstant.SAAS_VERIFICATION_CODE_EXIST + email);
        if (!StringUtils.isEmpty(s)) {
            return "您的操作太频繁了,请稍后再试。";
        }
        //生成验证码,发送验证码
        String code = randomCode();
        //存储验证码至redis  一分钟有效,用于判断一分钟内是否重复发送验证码
        redisTemplate.opsForValue().set(RedisConstant.SAAS_VERIFICATION_CODE_EXIST + email, code, 1, TimeUnit.MINUTES);
        //存储验证码至redis  15分钟有效
        redisTemplate.opsForValue().set(RedisConstant.SAAS_VERIFICATION_CODE + email, code, 15, TimeUnit.MINUTES);
        //发送 验证码邮件
        sendEmaiUtil.sendCodeMail(code, email);
        return null;
    }


//重置密码
@Override
    public String resetPassword(RegisterUserVo vo) {
    //判断验证码是否正确
        String s = redisTemplate.opsForValue().get(RedisConstant.SAAS_VERIFICATION_CODE + vo.getEmail());
        if (!vo.getCode().equals(s)) {
            return "验证码有误!";
        }
        SysUser user = new SysUser();
        user.setPassword(MD5Util.generate(vo.getPassword()));
        user.setLoginId(vo.getEmail());
        userMapper.resetPassword(user);
        return null;
    }
2.3 异步发送邮件
import com.ymob.saas.managerserver.pojo.sys.SysUser;
import com.ymob.saas.managerserver.utils.SendEmaiUtil;
import lombok.extern.slf4j.Slf4j;

import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
@Transactional
@Component
@Slf4j
public class ThreadTasks {

    @Resource
    private SendEmaiUtil sendEmaiUtil;

	//异步发送邮件
  	@Async
    public void sendRegisteMail(SysUser sysUser) {
        sendEmaiUtil.sendRegisterMail(sysUser);
    }
2.4 发送邮件 2.4.1 发送注册邮件

SendEmaiUtil

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dm.model.v20151123.SingleSendMailRequest;
import com.aliyuncs.dm.model.v20151123.SingleSendMailResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import com.ymob.saas.managerserver.config.SaasConfig;
import com.ymob.saas.managerserver.pojo.sys.SysUser;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

@Component
public class SendEmaiUtil {

    @Resource
    private SaasConfig saasConfig;
    
    //发送注册邮件 
	public void sendRegisterMail(SysUser sysUser) {
	  String str = "

   尊敬的【username】:

       您好,感谢您对" + saasConfig.getName() + "媒体服务平台的信任和支持!

       请登录" + saasConfig.getName() + "平台开启您的收益提升之旅,登录地址: https://app.medproad.com

       如果您有其他问题,请通过support@medproad.com与我们联系

       

    Medpro团队

"; //创建一个 Aliyun Acs Client, 用于发起 OpenAPI 请求 ("cn-hangzhou", 阿里云云账号AccessKey ID , 阿里云云账号AccessKey Secret) IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", "LTAI5tKx8r7TwRH3Arqttna9", "laMaU8QYkKwCF9WKpSfdj8AKlxyNn8"); IAcsClient client = new DefaultAcsClient(profile); // 创建一个 SingleSendMailRequest 并设置请求参数 SingleSendMailRequest request = new SingleSendMailRequest(); try { //发信地址 request.setAccountName(saasConfig.getEmailAccount()); //发信人昵称 request.setFromAlias(saasConfig.getName()); //地址类型。 取值:0:为随机账号 1:为发信地址 request.setAddressType(1); //回复地址 是否启用管理控制台中配置好回信地址 request.setReplyToAddress(true); //接收者邮箱 request.setToAddress(sysUser.getEmail()); //主题 request.setSubject("欢迎注册" + saasConfig.getName() + "媒体服务平台,我们等您很久了!"); //内容 String htmlBody = str.replaceAll("username", sysUser.getUsername()); request.setHtmlBody(htmlBody); //请求方法 request.setMethod(MethodType.POST); //发送邮件 获取响应 SingleSendMailResponse httpResponse = client.getAcsResponse(request); } catch (ClientException e) { //捕获错误异常码 System.out.println("ErrCode : " + e.getErrCode()); e.printStackTrace(); } } //发送验证码邮件 public void sendCodeMail(String code, String email) { IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", "LTAI5tKx8r7TwRH3Arqttna9", "laMaU8QYkKwCF9WKpSfdj8AKlxyNn8"); IAcsClient client = new DefaultAcsClient(profile); SingleSendMailRequest request = new SingleSendMailRequest(); String str = "

        您好,您正在修改" + saasConfig.getName() + "登录密码,请在验证码输入框输入: 【code】 ,验证码有效期n" + "    为15分钟,请尽快完成操作。验证码提供给他人可能导致账号被盗,请勿泄露,谨防被骗。

" + "

    " + saasConfig.getName() + "团队

"; try { request.setAccountName(saasConfig.getEmailAccount()); request.setFromAlias(saasConfig.getName()); request.setAddressType(1); request.setReplyToAddress(true); request.setToAddress(email); request.setSubject(saasConfig.getName() + "账号密码重置"); String htmlBody = str.replaceAll("code", code); request.setHtmlBody(htmlBody); request.setMethod(MethodType.POST); SingleSendMailResponse httpResponse = client.getAcsResponse(request); } catch (ClientException e) { //捕获错误异常码 System.out.println("ErrCode : " + e.getErrCode()); e.printStackTrace(); } } }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/845145.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号