springboot邮件发送

依赖

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

yml配置

spring:
  mail:
    username: 你的@qq.com
    password: 邮箱授权码
    host: smtp.qq.com
#    开启加密验证
    properties: {mail.smtp.ssl.enable:'true'}

简单的邮件

	@Test
	void contextLoads(){

//		一个简单的邮件
		SimpleMailMessage mailMessage = new SimpleMailMessage();
		mailMessage.setSubject("荣哥你好");
		mailMessage.setText("上课上累了");

		mailMessage.setTo("806451906@qq.com");
		mailMessage.setFrom("806451906@qq.com");
		javaMailSender.send(mailMessage);

	}

封装工具类(复杂得邮件)

		@Autowired
	private JavaMailSenderImpl javaMailSender;
/**
	 *
	 * @param multipart 是否支持多文件
	 * @param subject 标题
	 * @param text 内容
	 * @param file 文件
	 * @param setTo 接收者
	 * @throws MessagingException
	 */
	public void sendMail(boolean multipart,String subject,String text,File file,String setTo) throws MessagingException {
		//		一个复杂的邮件
		MimeMessage mimeMessage = javaMailSender.createMimeMessage();
		MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,multipart,"utf-8");

//		正文
		helper.setSubject(subject);
//		true:支持html格式
		helper.setText(text,true);
		//附件
		helper.addAttachment("头像",new File("C:\\Users\\admin\\Desktop\\1.jpg"));
		helper.addAttachment("头像",file);
		helper.setFrom("806451906@qq.com");
		helper.setTo(setTo);
		javaMailSender.send(mimeMessage);
	}

以上是在springboot的测试类中可以用,如果在项目中工具类没办法被spring识别,所以yml中配置的邮件属性就不生效了,报空指针错误,以下是web项目中的工具类

package com.ahead.util;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Configuration;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.util.Random;

/**
   工具类
 */



public class yanZhengUtil {

    /**
       注意:由于工具类无需创建对象,所以把其构造器私有化会显得很专业!
     */
    private yanZhengUtil(){

    }

    // 配置邮箱属性
    public static JavaMailSenderImpl JavaMailSender() {
        JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
        mailSender.setHost("smtp.qq.com");
        mailSender.setUsername("806451906@qq.com");
        mailSender.setPassword("xihdtjycwejcbebg");
        return mailSender;
    }

    /**
       静态方法生成验证码。
     */
    public static String createVerifyCode(int n){
        // 开发一个验证码:
        // 1、定义一个变量记住验证码。
        String code = "";
        // 2、定义一个变量记住全部验证码字符。
        String data = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        // 3、定义一个循环生成几个随机索引,去得到几个字符
        Random r = new Random();
        for (int i = 0; i < n; i++) {
            // 4、获取随机索引对应的字符。链接给code
            int index = r.nextInt(data.length());
            code += data.charAt(index);
        }
        return code;
    }


    public static void sendMail(String subject,String code, String setTo) throws MessagingException {
        JavaMailSenderImpl javaMailSender = JavaMailSender();
        System.out.println("code="+code);
        System.out.println("setTo="+setTo);
        //		一个简单的邮件
        SimpleMailMessage mailMessage = new SimpleMailMessage();
//		正文
        mailMessage.setSubject(subject);
//      内容
        mailMessage.setText("您的验证码为:"+code+",请在120秒内验证登录");
        mailMessage.setTo(setTo);
        mailMessage.setFrom(javaMailSender.getUsername());
        javaMailSender.send(mailMessage);
    }



}

控制层中直接调用就行

//            调用邮箱发送工具类
            yanZhengUtil.sendMail("邮箱登录验证码",verifyCode,email);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值