SpringBoot 实现发送邮件需要注意的地方

在项目中邮件发送是一个比较常见的需求。SpringBoot 作为Web开发的工具自然集成了邮件发送。本博客以一个简单的实例:发送Text 邮件,来介绍实现邮件发送的需要注意的地方。

(1) 在http://start.spring.io/ 下载SpringBootDemo,然后打开eclipse 导入项目(前提,安装完成Jdk,eclipse,maven)

(2)在pom.xml中加入邮件插件

        <!-- 邮件服务 -->
		<dependency> 
		    <groupId>org.springframework.boot</groupId>
		    <artifactId>spring-boot-starter-mail</artifactId>
		</dependency>

(3)配置application.properties

# 邮件服务配置文件
spring.mail.host=smtp.163.com
# 用户名
spring.mail.username=XX@163.com
# 开启smtp 时设置的安全密码
spring.mail.password=xxxxxx
spring.mail.default-encoding=UTF-8
# 以谁来发送邮件
mail.fromMail.addr=XX@163.com
spring.mail.properties.mail.smtp.auth=true  
spring.mail.properties.mail.smtp.starttls.enable=true  
spring.mail.properties.mail.smtp.starttls.required=true

(3)在本Demo中主要实现一个Service 接口,接口中一个发送Text 的方法,和一个实现Service 的实现类,然后就是test目录下的Test

MailService.java 

package com.example.demo.email.service;

public interface MailService {
	public void sendTextMailService(String to,String subject,String content);
}

MailServiceImpl.java 

package com.example.demo.email.service.impl;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Component;
import com.example.demo.email.service.MailService;
/**
 * 邮件服务的实现类
 * @author asus
 *
 */
@Component
public class MailServiceImpl implements MailService{
	private final Logger logger = LoggerFactory.getLogger(this.getClass());
	@Autowired
	private JavaMailSender sender;
	
	@Value("${mail.fromMail.addr}")
	private String from;
	/**
	 * 发送一个简单的文字邮件
	 */
	@Override
	public void sendTextMailService(String to, String subject, String content) {
		SimpleMailMessage message = new SimpleMailMessage();
		message.setFrom(from);
		message.setTo(to);
		message.setSubject(subject);
		message.setText(content);
		try{
			sender.send(message);
			logger.info("邮件已经发送出去");
		} catch (Exception e) {
			logger.error("邮件没有发送出去" + e);
		}
	}
}

Test

package com.example.demo.email.test;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import com.example.demo.email.service.MailService;

@RunWith(SpringRunner.class)
@SpringBootTest
public class MailTest {
	@Autowired
	private MailService mailService;
	@Test
	public void testSendTextMail(){
		mailService.sendTextMailService("目标邮箱@qq.com","test simple mail"," hello this is simple mail");
	}
}

然后运行Test ,可以看到发送成功。然后在你的目标的邮箱有你发送的邮件

=======================================================================================

上面是一个完整的简单Text 邮件的实现过程,当然只是一个Service

下面我们对实现的过程中可能出现的问题进行一次总结:

1) 邮件发送配置信息

首先是服务器,根据你使用的具体邮箱来具体设置。本Demo 使用的是个人版的163 邮箱,根据不同邮箱设置不同的邮箱的服务器。在这里我提供163邮箱的具体位置。(登录163邮箱,在首页的上方有一个设置,点击POP3/SMTP/IMAP)可以查看自己的服务器地址。

用户名:自己邮箱的账号

密码:这里的密码有些不同,不是你账号密码,而是客户端授权码,这个码,在163邮箱,POP3 下面有一个客户端授权码。这个授权码很重要是你发送邮件时验证必不可少的。也是你开启POP3/SMTP 时必须要设置,如果没有开启它们,是无法进行发送邮件的。

这里分享一个很容易出现问题的是: 先说说报错信息,授权失败 535,自己查看,SMTP等设置都没有问题,但是还是报错,这时你就需要注意的是,配置文件,=后不能加入空格,然后你的配置信息后面也不能有空格

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值