springboot java代码实现邮件通知

通过代码实现发送邮件通知到相关负责人,实现模板群发或单对单发送 ,本文旨在实现功能,所以创建文件顺序有些不认真

 

包结构:

1:首先创建一个config类 MailConfig 



import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import org.springframework.stereotype.Component;

/** 
 * 邮件读取配置类
 * @author 
 * <p>2019年5月9日 上午11:13:51</p>  
 * @see
 * @version 1.0 
 */ 
@Component
public class MailConfig {
		    private static final String PROPERTIES_DEFAULT = "mailConfig.properties";
		    public static String host;
		    public static Integer port;
		    public static String userName;
		    public static String passWord;
		    public static String emailForm;
		    public static String timeout;
		    public static String personal;
		    public static Properties properties;
		    static{
		        init();
		    }
		    /**
		     * 初始化
		     */
		    private static void init() {
		        properties = new Properties();
		        try{
		            InputStream inputStream = MailConfig.class.getClassLoader().getResourceAsStream(PROPERTIES_DEFAULT);
		            properties.load(inputStream);
		            inputStream.close();
		            host = properties.getProperty("mailHost");
		            port = Integer.parseInt(properties.getProperty("mailPort"));
		            userName = properties.getProperty("mailUsername");
		            passWord = properties.getProperty("mailPassword");
		            emailForm = properties.getProperty("mailUsername");
		            timeout = properties.getProperty("mailTimeout");
		            //发送人
		            personal = properties.getProperty("mailSender");
		        } catch(IOException e){
		            e.printStackTrace();
		        }
		    }
}

 

2: 需要写一个配置类 mailConfig.properties

里面的*号替换成自己的信息

mailConfig.properties
#服务器
mailHost=smtp.163.com
#端口号
mailPort=25
#邮箱账号(使用者改成自己的)
mailUsername=*****@163.com
#邮箱密码(使用者改成自己的)
mailPassword=*****
#时间延迟
mailTimeout=25000
# 邮件发送人信息
mailSender = ******

 

3:创建一个实体对象传参 MailEntity  (本文按要求写成了一个小项目,不需要的直接传参也可以)



import java.io.Serializable;

/** 
 * 邮件对象
 * @author 
 * <p>2019年5月9日 下午5:32:04</p>  
 * @see
 * @version 1.0 
 */ 
public class MailEntity implements Serializable{
	
	/** 
	 *  {用一句话描述这个变量表示什么}
	 */ 
	private static final long serialVersionUID = 4542302475678065294L;
	/*多个邮箱可用
	private String [] users;*/
	private String users;
	
	private String title;
	
	private String content;

	public String getUsers() {
		return users;
	}

	public void setUsers(String users) {
		this.users = users;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getContent() {
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((content == null) ? 0 : content.hashCode());
		result = prime * result + ((title == null) ? 0 : title.hashCode());
		result = prime * result + ((users == null) ? 0 : users.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj){
			return true;
		}
		if (obj == null){
			return false;
		}
		if (getClass() != obj.getClass()){
			return false;
		}
		MailEntity other = (MailEntity) obj;
		if (content == null) {
			if (other.content != null){
				return false;
			}
		} else if (!content.equals(other.content)){
			return false;
		}
		if (title == null) {
			if (other.title != null){
				return false;
			}
		} else if (!title.equals(other.title)){
			return false;
		}
		if (users == null) {
			if (other.users != null){
				return false;
			}
		} else if (!users.equals(other.users)){
			return false;
		}
		return true;
	}

	@Override
	public String toString() {
		return "MailEntity [users=" + users + ", title=" + title + ", content=" + content + "]";
	}

}

 

4:将配置使用起来,创建一个util工具   MailUtil  (这里的to  多个地址用String[] 接收)



import java.io.UnsupportedEncodingException;
import java.util.Properties;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;

import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;

import com.mozi.dap.mail.config.MailConfig;

public class MailUtil {
	private static final String HOST = MailConfig.host;
	private static final Integer PORT = MailConfig.port;
	private static final String USERNAME = MailConfig.userName;
	private static final String PASSWORD = MailConfig.passWord;
	private static final String EMAILFORM = MailConfig.emailForm;
	private static final String TIMEOUT = MailConfig.timeout;
	private static final String PERSONAL = MailConfig.personal;
	private static JavaMailSenderImpl mailSender = createMailSender();

	/**
	 * 邮件发送器
	 *
	 * @return 配置好的工具
	 */
	private static JavaMailSenderImpl createMailSender() {
		JavaMailSenderImpl sender = new JavaMailSenderImpl();
		sender.setHost(HOST);
		sender.setPort(PORT);
		sender.setUsername(USERNAME);
		sender.setPassword(PASSWORD);
		sender.setDefaultEncoding("Utf-8");
		Properties p = new Properties();
		p.setProperty("mail.smtp.timeout", TIMEOUT);
		p.setProperty("mail.smtp.auth", "false");
		sender.setJavaMailProperties(p);
		return sender;
	}

	/**
  * 发送邮件
  *
  * @param to 接受人   多个邮箱  String[] to  单个String to
  * @param subject 主题
  * @param html 发送内容
  * @throws MessagingException 异常
  * @throws UnsupportedEncodingException 异常
  */
	 public static void sendMail(String to, String subject, String html) throws MessagingException,UnsupportedEncodingException {
	     MimeMessage mimeMessage = mailSender.createMimeMessage();
	     // 设置utf-8或GBK编码,否则邮件会有乱码
	     MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
	     messageHelper.setFrom(EMAILFORM, PERSONAL);
	     messageHelper.setTo(to);
	     messageHelper.setSubject(subject);
	     messageHelper.setText(html, true);
	     mailSender.send(mimeMessage);
	 }
}

 5:写个控制层接口用来触发... MailController   (这里参数用@RequestBody接收是由于我其他项目调用,不需要的自己调整,不影响功能)



import java.io.UnsupportedEncodingException;

import javax.mail.MessagingException;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.mozi.dap.mail.entity.MailEntity;
import com.mozi.dap.mail.util.MailUtil;

/** 
 * 邮件发送控制层
 * @author 
 * <p>2019年5月9日 下午1:47:25</p>  
 * @see
 * @version 1.0 
 */ 
@Controller
@RequestMapping("mail/v1.0")
 public class MailController {
	/** 
	* 邮件发送
	* @param users 接受邮箱,可多个
	* @param title 标题
	* @param content 邮件内容
	*/
	@RequestMapping(value="/sendMail",method = RequestMethod.POST)
	@ResponseBody
	public void sendMail( @RequestBody MailEntity mailEntity){
	        try {
	        	 MailUtil.sendMail(mailEntity.getUsers(), mailEntity.getTitle(), mailEntity.getContent());
	        } catch (MessagingException e) {
	            e.printStackTrace();
	        } catch (UnsupportedEncodingException e) {
	            e.printStackTrace();
	        }
	    }
}

 

6:想要使用上述的内容,还需要关键的jar包依赖,我换了好几个,目前使用的是以下俩个jar依赖,第一个应该大家都没有问题,私服里通常都有,第二个没有的话自己下载一个吧,2.1.3  或2.1.6都没问题,如果还有Impl引入报错,我查到的问题是jar冲突或者是springframework里的哪个东西是父级依赖,那么参考下面我自己用的pom吧,自己调整,不要笑,不要恼,本人小白怕误导。

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

        <dependency>
            <groupId>com.sun.mail</groupId>
            <artifactId>javax.mail</artifactId>
        </dependency>

 ps:还有问题请看这里

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <packaging>jar</packaging>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.mozi.dap</groupId>
    <artifactId>dap-mailservice</artifactId>
    <version>0.0.1</version>
    <name>dap-mailservice</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
        <dependency>
            <groupId>com.sun.mail</groupId>
            <artifactId>javax.mail</artifactId>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

7:调用路径后邮件接收结果 (邮件内容我是在另一个服务直接拼接的,如需使用定义格式,内容赋值时,内容中拼接html标签)

以上内容可以自己改造,希望对大家有所帮助 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值