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

SpringBoot实现发送Email邮件

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

SpringBoot实现发送Email邮件

君子坐而论道,少年起而行之

success
    • 前提
    • 环境
    • 实现
      • 实体类email
      • 通用类
      • 配置MailProperties类
        • 配置方式一:
        • 配置方式二:
      • 测试请求
    • 效果图

前提

   写一篇简单的邮件发送功能。

环境

   1.SpringBoot1.5.x
   2.JDK8
   3.Maven
   4.Lombok插件
   5.email依赖

  
            javax.activation
            activation
            1.1.1
        
        
            com.sun.mail
            javax.mail
            1.6.1
 
实现 实体类email
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@Builder(toBuilder = true, builderClassName = "Builder")
public class Email {
    
    private String subject;
   
    private String text;
    
    private boolean htmlText;
    
    private String form;
    
    @lombok.Builder.Default
    private List tos = new ArrayList<>(0);
    
    @lombok.Builder.Default
    private List ccs = new ArrayList<>(0);
    
    @lombok.Builder.Default
    private List bcc = new ArrayList<>(0);
    
    @lombok.Builder.Default
    private Map attachments = new HashMap<>(0);
}

通用类

   自定义通用类实现email发送。

   @Autowired
    private JavaMailSender javaMailSender;

    private String name;

    @Override
    public void sendMimeMessage(Email email) throws MessagingException {
        javaMailSender.send(buildMimeMessage(email));
    }
	//赋值信息
    private MimeMessage buildMimeMessage(Email email) throws MessagingException {
        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(javaMailSender.createMimeMessage(), true, "GBK");
        try {
        	//邮件主题
            mimeMessageHelper.setSubject(email.getSubject());
            //邮件发送人
            mimeMessageHelper.setFrom(email.getForm());
            //邮件收信人
            mimeMessageHelper.setTo(email.getTos().toArray(new String[0]));
            //抄送人
            mimeMessageHelper.setCc(email.getCcs().toArray(new String[0]));
            //密送人
            mimeMessageHelper.setBcc(email.getBccs().toArray(new String[0]));
			//邮件内容
            mimeMessageHelper.setText(email.getText(), email.isHtmlText());
            for (Map.Entry attachment : email.getAttachments().entrySet()) {
            //
                mimeMessageHelper.addAttachment(attachment.getKey(), attachment.getValue());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return mimeMessageHelper.getMimeMessage();
    }
配置MailProperties类

   这个是Mail的配置文件,配置文件以spring.mail开头并且附带上该类中的属性名称即可完成赋值。

package org.springframework.boot.autoconfigure.mail;

import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;

import org.springframework.boot.context.properties.ConfigurationProperties;


@ConfigurationProperties(prefix = "spring.mail")
public class MailProperties {

	private static final Charset DEFAULT_CHARSET = StandardCharsets.UTF_8;

	
	private String host;

	
	private Integer port;

	
	private String username;

	
	private String password;

	
	private String protocol = "smtp";

	
	private Charset defaultEncoding = DEFAULT_CHARSET;

	
	private Map properties = new HashMap<>();

	
	private String jndiName;

	public String getHost() {
		return this.host;
	}

	public void setHost(String host) {
		this.host = host;
	}

	public Integer getPort() {
		return this.port;
	}

	public void setPort(Integer port) {
		this.port = port;
	}

	public String getUsername() {
		return this.username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return this.password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getProtocol() {
		return this.protocol;
	}

	public void setProtocol(String protocol) {
		this.protocol = protocol;
	}

	public Charset getDefaultEncoding() {
		return this.defaultEncoding;
	}

	public void setDefaultEncoding(Charset defaultEncoding) {
		this.defaultEncoding = defaultEncoding;
	}

	public Map getProperties() {
		return this.properties;
	}

	public void setJndiName(String jndiName) {
		this.jndiName = jndiName;
	}

	public String getJndiName() {
		return this.jndiName;
	}

}

配置方式一:

   yaml方式

  mail:
    host: 			   #邮件地址
    username: 		   #用户名
    password:    	   #密码
    properties:
      mail:
      smtp:
        auth: true    #stmp认证
        timeout: 25000	#超时
配置方式二:

   properties方式

//注入资源
@PropertySource(value = {"classpath:emailproperties.properties"})
spring.mail.host=				#邮件地址
spring.mail.username=			#用户名
spring.mail.password=			#密码
spring.mail.properties.smtp.auth=		#stmp认证
spring.mail.properties.smtp.timeout=	#超时
测试请求
    @GetMapping(value = "/sendmail")
    @ResponseBody
    public String sendMail() throws MessagingException {
        Email email = new Email();
        List listTos = new ArrayList(); //收件人
        listTos.add("xxxx");
        email.setText("Dear Admin:    收到邮件");
        email.setSubject("邮件接收");
        email.setHtmlText(true);
        email.setTos(listTos);
        EmailUtil.sendMimeMessage(email);
        return "success";
    }
效果图

   已完成。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/681324.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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