springboot发送邮件,常用方法

一:pom文件

springboot版本2.0

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

二:配置发送信息,配送发送信息有两种方式

一种是在application文件中配置

#邮件配置
spring.mail.host=邮件服务器地址
spring.mail.username=用户名
spring.mail.password=密码
spring.mail.default-encoding=UTF-8
#登录服务器是否需要认证
spring.mail.smtp.auth=true
#SSL证书Socket工厂
spring.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
#使用SMTPS协议465端口
spring.mail.smtp.socketFactory.port=465

#显示在收件人邮箱里面的发件人名称
spring.mail.self.username=用户名

一种在代码中配置,数据可以从动态更改

	/**
	 * 这个方法在实际应用中,springboot会通过在配置文件application.xml
	 * 中加配置自动实例化JavaMailSenderImpl。
	 * 这里只是手动把信息写入JavaMailSenderImpl中。
	 */
	public static JavaMailSenderImpl initJavaMailSender() {
//		以下配置信息具体作用请自行百度
		Properties properties = new Properties();
		properties.setProperty("mail.debug", "true");// 是否显示调试信息(可选)
		properties.setProperty("mail.smtp.starttls.enable", "false");
		properties.setProperty("mail.smtp.socketFactory.class",
				"javax.net.ssl.SSLSocketFactory");
		properties.setProperty("mail.smtp.auth", "true");
		properties.setProperty("mail.smtp.starttls.required", "true");
		properties.put(" mail.smtp.timeout ", " 25000 ");

//		发送邮件配置
		JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
		javaMailSender.setJavaMailProperties(properties);
		javaMailSender.setHost("网易:smtp.ym.163.com,QQ:smtp.qq.com");
		javaMailSender.setUsername("发送者邮箱");
		javaMailSender.setPassword("邮箱密码,个人QQ则是开通smtp给的验证码");
                javaMailSender.setPort(465);// 发送邮件端口号,不写也没问题
		javaMailSender.setDefaultEncoding("UTF-8");

		return javaMailSender;
	}

第一种因为是配置,所以在使用时要注入javaMailSender。

@Autowired
JavaMailSender javaMailSender;

第二种接收一下返回值

JavaMailSenderImpl mailSender = initJavaMailSender();

三:测试类代码

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootDemoApplicationTests {

	/*@Autowired
        Configuration configuration;*/

	/*@Autowired
	JavaMailSender javaMailSender;*/

	private String from = "zhengyouzhen@dingeikeji.com";
	private  String[] tos = {"z10674577@qq.com"};
	private String[] cc = {"test1@dingpeikeji.com","test2@qq.com"};
	private String[] bcc = {""};

	/**
	 * 发送附件
	 * @throws Exception
	 */
	@Test
	public void sendAttachmentsMail() throws Exception {
//		发送邮件需要的配置信息
		JavaMailSenderImpl mailSender = initJavaMailSender();
//		初始化发送邮件信息
		MimeMessage mimeMessage = mailSender.createMimeMessage();
//		是否有文件
		MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
//		邮件具体信息----------------------------------------------------------------
//		发送者
		helper.setFrom(from);
//		接收者,可传数组
		helper.setTo(tos);
//		抄送者,可传数组
		helper.setCc(cc);
//		密送者,可传数组
		helper.setBcc(bcc);
//		邮件标题
		helper.setSubject("主题:有附件");
//		邮件内容
		helper.setText("有附件的邮件");
//		如果内容是html,可以把html换成单独的模版
//		helper.setText("<html><body><h1>这是html<h1></body></html>", true);
//		附件信息
		FileSystemResource file = new FileSystemResource(new File("D:/test.png"));
//		添加发送附件
		helper.addAttachment("附件-1.jpg", file);
		helper.addAttachment("附件-2.jpg", file);
//		邮件发送
		mailSender.send(mimeMessage);
	}

	/**
	 * 模版邮件
	 * @throws Exception
	 */
        /*@Test
        public void sendTemplateMail() throws Exception {
            JavaMailSenderImpl mailSender = initJavaMailSender();
            MimeMessage mimeMessage = mailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
            helper.setFrom("zhengyouzhen@dingpeikeji.com");
            helper.setTo("z10647577@qq.com");
            helper.setSubject("主题:模板邮件");
            Map<String, Object> model = new HashedMap();
            model.put("username", "zyz");
//            这里引用模版邮件用的是freemarker接收的
            Template t = configuration.getTemplate("template.vm"); // 默认是在templates目录下,具体路径自己写
            String text = FreeMarkerTemplateUtils.processTemplateIntoString(t, model);
            helper.setText(text, true);
            mailSender.send(mimeMessage);
        }*/

	/**
	 * 这个方法在实际应用中,springboot会通过在配置文件application.xml
	 * 中加配置自动实例化JavaMailSenderImpl。
	 * 这里只是手动把信息写入JavaMailSenderImpl中。
	 */
	public static JavaMailSenderImpl initJavaMailSender() {
//		以下配置信息具体作用请自行百度
		Properties properties = new Properties();
		properties.setProperty("mail.debug", "true");// 是否显示调试信息(可选)
		properties.setProperty("mail.smtp.starttls.enable", "false");
		properties.setProperty("mail.smtp.socketFactory.class",
				"javax.net.ssl.SSLSocketFactory");
		properties.setProperty("mail.smtp.auth", "true");
		properties.setProperty("mail.smtp.starttls.required", "true");
		properties.put(" mail.smtp.timeout ", " 25000 ");

//		发送邮件配置
		JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
		javaMailSender.setJavaMailProperties(properties);
		 javaMailSender.setHost("网易:smtp.ym.163.com,QQ:smtp.qq.com"); 
                javaMailSender.setUsername("发送者邮箱");
                javaMailSender.setPassword("邮箱密码,个人QQ则是开通smtp给的验证码");       
                javaMailSender.setPort(465);
                javaMailSender.setDefaultEncoding("UTF-8");return javaMailSender;
        }
}

模版

<html>
<body>
    <h3>你好, ${username}, 这是一封模板邮件!</h3>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值