• Spring Boot 2.X(十三):邮件服务


    前言

    邮件服务在开发中非常常见,比如用邮件注册账号、邮件作为找回密码的途径、用于订阅内容定期邮件推送等等,下面就简单的介绍下邮件实现方式。

    准备

    一个用于发送的邮箱,本文是用腾讯的域名邮箱,可以自己搞一个域名绑定下,登录地址:http://domain.mail.qq.com

    邮件服务实现

    1.添加依赖

    <!-- 启用邮箱 -->
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-mail</artifactId>
    		</dependency>
    

    2.配置文件

    spring.mail.host=smtp.qq.com
    spring.mail.username=zwqh@clover1314.com
    spring.mail.password=*****
    spring.mail.properties.mail.smtp.auth=true
    spring.mail.properties.mail.smtp.starttls.enable=true
    spring.mail.properties.mail.smtp.starttls.required=true
    
    

    3.实现示例

    @Service
    public class MailTool {
    	
    	@Value("${spring.mail.username}")
    	private String from;
    
    	@Autowired
    	private JavaMailSender mailSender;
    
    	/**
    	 * 发送邮件
    	 * 
    	 * @return
    	 */
    	public boolean send() {
    		try {
    			SimpleMailMessage message = new SimpleMailMessage();
    			message.setFrom(from);//发送者
    			message.setTo("zwqh@clover1314.com");//接受者
    			message.setCc("sohuniuer@sina.com");// 抄送
    			message.setSubject("邮件主题"); //邮件主题
    			message.setText("这里是邮件内容");//邮件内容
    			mailSender.send(message);
    			System.out.println("邮件发送成功");
    			return true;
    		} catch (Exception e) {
    			e.printStackTrace();
    			return false;
    		}
    	}
    
    	/**
    	 * 发送富文本邮件
    	 * 
    	 * @return
    	 */
    	public boolean sendHtml() {
    		// 使用 JavaMail 的 MimeMessage,支持更多复杂的邮件格式和内容
    		MimeMessage mimeMessage = mailSender.createMimeMessage();
    		try {
    			// 创建 MimeMessageHelper 对象,处理 MimeMessage 辅助类
    			MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
    			// 使用辅助类 MimeMessage 设定参数
    			helper.setFrom(from);
    			helper.setTo("zwqh@clover1314.com");
    			helper.setBcc("sohuniuer@sina.com");//密送
    			helper.setSubject("富文本邮件主题");
    			helper.setText("<h1>这是富文本邮件内容标题</h1><p style='color:red;'>这里是段落一</p><p style='color:orange;'>这里是段落二</p>",
    					true);		
    			mailSender.send(mimeMessage);
    			System.out.println("邮件发送成功");
    			return true;
    		} catch (MessagingException e) {
    			e.printStackTrace();
    			return false;
    		}
    	}
    	/**
    	 * 发送富文本带附件的邮件
    	 * @return
    	 */
    	public boolean sendHtmlWithAttach() {
    		// 使用 JavaMail 的 MimeMessage,支持更多复杂的邮件格式和内容
    		MimeMessage mimeMessage = mailSender.createMimeMessage();
    
    		try {
    			// 创建 MimeMessageHelper 对象,处理 MimeMessage 辅助类
    			MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
    			helper.setFrom(from);
    			helper.setTo("zwqh@clover1314.com");
    			helper.setSubject("富文本带附件的邮件主题");
    			helper.setText("<h1>这是富文本邮件内容标题</h1><p style='color:red;'>这里是段落一</p><p style='color:orange;'>这里是段落二</p>",
    					true);
    			//加载文件资源作为附件
    			ClassPathResource file=new ClassPathResource("static/avatar2.jpg");
    			//添加附件,并重命名
    			helper.addAttachment("附件.jpg", file);
    			mailSender.send(mimeMessage);
    			System.out.println("邮件发送成功");
    			return true;
    		} catch (MessagingException e) {
    			e.printStackTrace();
    			return false;
    		}
    
    	}
    
    }
    

    4.Controller 用于测试

    @RestController
    public class MailController {
    
    	@Autowired
    	private MailTool mailTool;
    	
    	@RequestMapping("/send")
    	public String send() {
    		mailTool.send();
    		return "send success";
    	}
    	
    	@RequestMapping("/sendHtml")
    	public String sendHtml() {
    		mailTool.sendHtml();
    		return "sendHtml success";
    	}
    	
    	@RequestMapping("/sendHtmlWithAttach")
    	public String sendHtmlWithAttach() {
    		mailTool.sendHtmlWithAttach();
    		return "sendHtmlWithAttach success";
    	}
    	
    	
    }
    

    5.测试效果

    示例代码

    github

    码云

    非特殊说明,本文版权归 朝雾轻寒 所有,转载请注明出处.

    原文标题:Spring Boot 2.X(十三):邮件服务

    原文地址: https://www.zwqh.top/article/info/22

    如果文章对您有帮助,请扫码关注下我的公众号,文章持续更新中...

  • 相关阅读:
    centos系统/dev/mapper/centosroot目录被占满的解决方式
    SpringBoot上如何实现文件上传 FILE
    java list 和数组直接相互转换
    vue axios.defaults.withCredentials = true
    java中局部变量需要初始化吗
    用Java实现MD5加盐
    java map 合并两个map map集合的putall_Java Map.putAll()方法:追加另一个Map对象到当前Map集合
    JSON字符串转HashMap Gson
    OO_Lab2总结博客
    采购签核 RFC bapi_po_release 淡淡
  • 原文地址:https://www.cnblogs.com/zwqh/p/11770621.html
Copyright © 2020-2023  润新知