SpringBoot发送邮件

花个10分钟总结一下,虽然网上简称很多,自己记录一下动手实现的步骤:

引入依赖
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-mail</artifactId>
</dependency>

可以打开spring-boot-autoconfigure-2.5.0-sources.jar 下的spring.fatories 搜索Mail相关的配置,然后点开看里面有什么属性需要配置
在这里插入图片描述
在这里插入图片描述
然后在application.properties 里面打出spring.mail ,使用提示看下这些属性。然后配置。

#配置邮件参数
spring.mail.default-encoding=UTF-8
spring.mail.host=smtp.qq.com
#用户名 填真实的邮箱  9918118xx@qq.com
spring.mail.username=9918118xx@qq.com
#密码(开启开启SMTP/POP3时的授权码)   sercrfeqknozxxxx
#ndwccgzjhbmtbxxx

spring.mail.password=sercrfeqknozbdjj
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.timeout=25000
#以谁来发送邮件
mail.fromMail.addr=xxxxx@foxmail.com

如何打开POP3/SMTP/IMAP功能?
https://service.mail.qq.com/cgi-bin/help?id=28&no=166&subtype=1

然后开发邮件服务类:

贴一下实现类,接口类忽略:

@Service
public class MailSeviceImpl implements MailSevice {
	
	private static final Logger logger = LoggerFactory.getLogger(MailSeviceImpl.class);
	
	@Autowired
	JavaMailSender mailSender;
	
	@Value("${mail.fromMail.addr}")
	private String from;
	
	@Override
	public void sendMail(String[] to, String subject, String content) {
		
		SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
		simpleMailMessage.setFrom(from);
		simpleMailMessage.setTo(to);
		simpleMailMessage.setSubject(subject);
		simpleMailMessage.setText(content);
		
		try {
			mailSender.send(simpleMailMessage);
			logger.info("======>简单邮件已经发送!");
		} catch (Exception e) {
			// TODO: handle exception
			logger.error("简单邮件发送失败!",e);
		}
	}

	@Override
	public void sendHtmlMail(String[] to, String subject, String content) {

		MimeMessage mimeMessage = mailSender.createMimeMessage();
		try {
			//true表示需要创建一个multipart message
			MimeMessageHelper hepler = new MimeMessageHelper(mimeMessage,true);
			hepler.setFrom(from);
			hepler.setTo(to);
			hepler.setSubject(subject);
			hepler.setText(content);
			mailSender.send(mimeMessage);
			logger.info("html邮件发送成功!");
		} catch (MessagingException e) {
			// TODO Auto-generated catch block
			logger.error("发送html邮件时发生异常!",e);
		}
	}

	//发送带附件的邮件
	@Override
	public void sendAttachmentsMail(String[] to, String subject, String content, String filePath) {
		
		MimeMessage mimeMessage = mailSender.createMimeMessage();
		
		try {
			
			MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);
			helper.setFrom(from);
			helper.setText(content);
			helper.setSubject(subject);
			helper.setTo(to);
			
			FileSystemResource file = new FileSystemResource(new File(filePath));
			//获取文件名称
			String fileName = filePath.substring(filePath.lastIndexOf(File.separator)).replace("\\", "");
			System.out.println("文件名称:"+fileName);
			helper.addAttachment(fileName, file);
			
			mailSender.send(mimeMessage);
			logger.info("发送带附件的邮件成功!");
		} catch (MessagingException e) {
			// TODO Auto-generated catch block
			logger.error("发送带附件的邮件时发生异常!",e);
		}
	}

	@Override
	public void sendInlineResourceMail(String[] to, String subject, String content, String rscPath, String rscId) {
		
		MimeMessage mimeMessage = mailSender.createMimeMessage();
		
		try {
			MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);
			helper.setFrom(from);
			helper.setText(content);
			helper.setSubject(subject);
			helper.setTo(to);
			
			FileSystemResource file = new FileSystemResource(new File(rscPath));
			helper.addInline(rscId, file);
			mailSender.send(mimeMessage);
			logger.info("发送带图片资源的邮件成功!");
		} catch (MessagingException e) {
			// TODO Auto-generated catch block
			logger.error("发送带图片资源的邮件时遇到异常!",e);
		}
	}
	

}

测试类:

@RunWith(SpringRunner.class)
@SpringBootTest
public class MailSeviceImplTest {
	
	@Autowired
	MailSevice mailService;

	@Before
	public void setUp() throws Exception {
		System.out.println("启动测试。。。");
	}

	@Test
	public void testSendMail() {
		String[] to = {"9918118xx@qq.com","10145359xxx@qq.com"};
		mailService.sendMail(to,"test simple mail", "这是一个测试邮件");
	}

	
	@Test
	public void testSendHtmlMail() {
		
		String[] to = {"9918118xx@qq.com","10145359xx@qq.com"};
		
		String content ="<html>\n"
				+ "<body>\n"
				+ "<h2>这是一封Html邮件!!!</h2>\n"
				+ "</body>\n"
				+ "</html>";
		
		mailService.sendMail(to,"test html mail", content);
	}
	
	@Test
	public void testSendAttachmentsMail() {
		
		String[] to = {"9918118xx@qq.com","10145359xx@qq.com"};
		String filePath="H:\\Fangdichang\\MyprojectWorkSpace\\house.zip";
		mailService.sendAttachmentsMail(to, "test acctachments mail", "这是一份带附件的邮件", filePath);
	}
	
	@Test
	public void testsendInlineResourceMail() {
		
		String[] to = {"991811xxx@qq.com","1014535xxx@qq.com"};
		String rscPath="F:\\html\\999.jpg";
		String rscId="007";
		String content="<html><body>这是有图片的邮件:<img src=\'cid:" + rscId + "\'></body></html>";
		
		mailService.sendInlineResourceMail(to, "带图片的邮件", content, rscPath, rscId);
	}

就这么多吧,给自己做个记录。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值