springboot发送邮件的实现例子

本文介绍如何使用 Spring Boot 发送多种类型的电子邮件,包括纯文本、HTML、带图片及附件的邮件,并提供完整的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

springboot是集大成者,对于发送邮件的功能也不例外。而且往往是原来的功能实现更简单,方便。更符合Facade Pattern。
下面就是springboot发送邮件的实现例子,代码已封装好,按照提示的步骤配置好就可以直接用了。当然如果你是新搭的项目,需要引入springboot的mail包

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
引入后它会自动下载javax.mail包

上代码:
package com.yy.common.utils;

import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.util.Properties;

/**
 * 
 * @description: 发送邮箱:可以发送文本,可以附加html、图片、附件,支持同时发送多个邮箱
 * 使用:
 * 第一步:在的项目的配置文件(application.properties)中加入邮件配置
 * spring.mail.host=smtp.163.com
 * spring.mail.username=***@163.com
 * spring.mail.password=***
 * spring.mail.port=465
 * spring.mail.default-encoding=UTF-8
 * spring.mail.protocol=smtp
 * spring.mail.properties.mail.debug=true
 * spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
 * spring.mail.properties.mail.smtp.auth=true
 * spring.mail.properties.mail.smtp.timeout=25000
 * 第二步:
 * 在你调用此工具的类中,加入如下:此处利用springboot的feature
 * @Resource
 * private JavaMailSenderImpl mailSender;
 *
 * @company:yy
 * @author: skyler
 * @time: 2016年8月27日 下午6:05:13
 */
public class SendMailUtils {

	public static final String DEFALUT_ENCODING = "UTF-8";

	public static void main(String[] args) throws Exception {
		JavaMailSenderImpl sender = initJavaMailSender();
		String[] ss = { "yy11@163.com", "904510000@qq.com" };

		sendTextWithHtml(sender, ss, "测试简单文本邮件发送! ", " <a href='http://work.dev.gomeplus.com/'>test</a>测试我的简单邮件发送机制!! ");

	        //sendTextWithImg(sender, ss, "测试邮件中嵌套图片!!", "<html><head></head><body><h1>hello 欢迎你!!spring image html mail</h1><img src='cid:image'/></body> , "image", "d:/compare2.png");

		//sendWithAttament(sender,"yy22@163.com","测试邮件中上传附件!!","<html><head></head><body><h1>你好:附件中有学习资料!</h1></body></html>","c.png","d:/compare2.png");

		//sendWithAll(sender, "yy22@163.com", "测试邮件中嵌套图片!!", "<html><head></head><body><h1>hello 欢迎你!!spring image html ma ", "image", "d:/compare2.png","工作日志.docx","d:/工作日志.docx");
	}

	public static void sendTextWithHtml(JavaMailSenderImpl sender, String[] tos, String subject, String text)
			throws Exception {
		MimeMessage mailMessage = sender.createMimeMessage();
		initMimeMessageHelper(mailMessage, tos, sender.getUsername(), subject, text);
		// 发送邮件
		sender.send(mailMessage);

		System.out.println("邮件发送成功..");
	}

	public static void sendTextWithImg(JavaMailSenderImpl sender, String[] tos, String subject, String text,
			String imgId, String imgPath) throws MessagingException {
		MimeMessage mailMessage = sender.createMimeMessage();
		MimeMessageHelper messageHelper = initMimeMessageHelper(mailMessage, tos, sender.getUsername(), subject, text,
				true, true, "GBK");
		// 发送图片
		FileSystemResource img = new FileSystemResource(new File(imgPath));
		messageHelper.addInline(imgId, img);
		// 发送邮件
		sender.send(mailMessage);

		System.out.println("邮件发送成功..");
	}

	public static void sendWithAttament(JavaMailSenderImpl sender, String[] tos, String subject, String text,
			String AttachName, String filePath) throws MessagingException {
		MimeMessage mailMessage = sender.createMimeMessage();
		MimeMessageHelper messageHelper = initMimeMessageHelper(mailMessage, tos, sender.getUsername(), subject, text,
				true, true, DEFALUT_ENCODING);

		FileSystemResource file = new FileSystemResource(new File(filePath));
		// 发送邮件
		messageHelper.addAttachment(AttachName, file);
		sender.send(mailMessage);

		System.out.println("邮件发送成功..");

	}

	public static void sendWithAll(JavaMailSenderImpl sender, String[] tos, String from, String subject, String text,
			String imgId, String imgPath, String AttachName, String filePath) throws MessagingException {
		MimeMessage mailMessage = sender.createMimeMessage();
		MimeMessageHelper messageHelper = initMimeMessageHelper(mailMessage, tos, sender.getUsername(), subject, text,
				true, true, DEFALUT_ENCODING);

		// 插入图片
		FileSystemResource img = new FileSystemResource(new File(imgPath));
		messageHelper.addInline(imgId, img);
		// 插入附件
		FileSystemResource file = new FileSystemResource(new File(filePath));
		messageHelper.addAttachment(AttachName, file);

		// 发送邮件
		sender.send(mailMessage);

		System.out.println("邮件发送成功..");

	}

	private static MimeMessageHelper initMimeMessageHelper(MimeMessage mailMessage, String[] tos, String from,
			String subject, String text) throws MessagingException {
		return initMimeMessageHelper(mailMessage, tos, from, subject, text, true, false, DEFALUT_ENCODING);
	}

	
	private static MimeMessageHelper initMimeMessageHelper(MimeMessage mailMessage, String[] tos, String from,
			String subject, String text, boolean isHTML, boolean multipart, String encoding) throws MessagingException {
		MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage, multipart, encoding);
		messageHelper.setTo(tos);
		messageHelper.setFrom(from);
		messageHelper.setSubject(subject);
		// true 表示启动HTML格式的邮件
		messageHelper.setText(text, isHTML);

		return messageHelper;
	}


	/**
	 * 这个方法在实际应用中,springboot会通过在配置文件application.xml
	 * 中加配置自动实例化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.put(" mail.smtp.timeout ", " 25000 ");

		JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();

		javaMailSender.setJavaMailProperties(properties);
		javaMailSender.setHost("smtp.163.com");
		javaMailSender.setUsername("你邮箱的用户名"); // s根据自己的情况,设置username
		javaMailSender.setPassword("你邮箱的密码"); // 根据自己的情况, 设置password
		javaMailSender.setPort(465);
		javaMailSender.setDefaultEncoding("UTF-8");

		return javaMailSender;
	}

}

### Spring Boot 使用网易云邮箱发送邮件的配置 在 `application.properties` 文件中,针对网易云邮箱的服务设置如下属性: ```properties spring.mail.host=smtp.163.com spring.mail.username=your_email@163.com spring.mail.password=your_password_or_authorization_code spring.mail.properties.mail.smtp.ssl.trust=smtp.163.com spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory spring.mail.properties.mail.smtp.socketFactory.port=465 spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true spring.mail.properties.mail.smtp.starttls.required=true ``` 上述配置指定了 SMTP 服务器地址、登录凭证以及 SSL/TLS 加密选项[^2]。 为了简化开发体验,Spring 官方提供了 `spring-boot-starter-mail` 组件来处理邮件功能。此组件已经包含了必要的依赖项并进行了合理的默认配置调整[^1]。 当引入该启动器之后,在应用程序上下文中会自动注册 JavaMailSender 实现对象,开发者可以直接注入此类型实例用于编写业务逻辑代码中的邮件操作部分[^3]。 下面是一个简单的例子展示怎样通过编程方式调用已配置好的 mail sender 来实现基本电子邮件通知的功能: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.FileSystemResource; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.SimpleMailMessage; import org.springframework.stereotype.Service; @Service public class EmailService { @Autowired private JavaMailSender javaMailSender; public void sendSimpleEmail(String to, String subject, String text){ SimpleMailMessage message = new SimpleMailMessage(); message.setFrom("from@example.com"); message.setTo(to); message.setSubject(subject); message.setText(text); javaMailSender.send(message); } } ``` 这段代码定义了一个名为 `EmailService` 的服务类,它负责构建一封简单纯文本格式的电子邮件并通过注入的 `JavaMailSender` 接口完成实际投递过程。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值