spring邮箱服务

Spring JavaMail 发送邮件示例
spring支持Java Mail的封装,邮件发送服务是由Spring的org.springframework.mail.MailSender接口。
163邮件无法发送,qq邮箱可以发送,在第一次使用时系统会提示你开启POP3和SMTP协议。
在spring项目环境下,首先到导入activation.jar和mail.jar 两个jar包;

[color=red] SendMail.java(主程序)[/color]
public class SendMail {

public ApplicationContext ctx = null;


public SendMail() {
// 获取上下文
ctx = new ClassPathXmlApplicationContext("simplemail.xml");
}

public void send() {

// 获取JavaMailSender bean
JavaMailSender sender = (JavaMailSender) ctx.getBean("mailSender");
JavaMailSenderImpl senderImpl = (JavaMailSenderImpl) ctx.getBean("javaMailSenderImpl");;

// 建立邮件信息
MimeMessage mailMessage = senderImpl.createMimeMessage();

try {
// 设置utf-8或GBK编码,否则邮件会有乱码
MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage, true, "utf-8");
messageHelper.setTo("123456@qq.com");// 接受者
messageHelper.setFrom("258778983@qq.com");// 发送者
messageHelper.setSubject("测试邮件");// 主题

// 邮件内容,注意加参数true,表示启用html格式
messageHelper.setText("测试123", true);
sender.send(mailMessage);

} catch (Exception e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
new SendMail().send();


}

}


[color=red]src目录下创建simplemail.xml:[/color]

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

<!--spring 外在化应用 properties 参数的配置 -->
<context:property-placeholder location="/mail.properties" />

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${mail.host}"></property>
<property name="port" value="${mail.port}"></property>
<property name="username" value="${mail.username}"></property>
<property name="password" value="${mail.password}"></property>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.debug">false</prop>
<prop key="mail.smtp.socketFactory.class">${mail.smtp.socketFactory.class}</prop>
</props>
</property>
</bean>

<bean id="javaMailSenderImpl" class="org.springframework.mail.javamail.JavaMailSenderImpl"></bean>

</beans>

[color=red]在src目录下创建mail.proterties[/color]mail.host=smtp.qq.com
mail.port=465
mail.username=258778983
mail.password=你的密码
mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
### Spring Cloud 项目中的邮箱发送功能配置及实现 #### 1. 添加邮件依赖 为了在 Spring Cloud 项目中实现邮件发送功能,首先需要引入 `spring-boot-starter-mail` 的 Maven 或 Gradle 依赖。以下是对应的 POM 文件片段: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> ``` 此依赖提供了 JavaMailSender 接口以及其实现类 SimpleMailMessage 和 MimeMessageHelper,用于构建和发送电子邮件[^3]。 --- #### 2. 配置邮件服务器参数 在项目的 `application.yml` 或 `application.properties` 中添加邮件服务器的相关配置。以下是一个典型的 SMTP 配置示例: ##### application.yml 示例: ```yaml spring: mail: host: smtp.example.com # SMTP 服务器地址 port: 587 # SMTP 端口号 (通常为 25, 465, 或 587) username: your-email@example.com # 发送方邮箱账号 password: your-password # 发送方邮箱密码或授权码 properties: mail: smtp: auth: true # 是否需要身份验证 starttls: enable: true # 启用 STARTTLS 加密协议 ``` 如果使用的是 Gmail,则需启用两步验证并生成应用专用密码作为 `password` 值[^3]。 --- #### 3. 编写邮件发送服务 创建一个 Service 类来封装邮件发送逻辑。可以通过注入 `JavaMailSender` 实现邮件的发送操作。 ##### MailService.java 示例: ```java import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.stereotype.Service; @Service public class MailService { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired private JavaMailSender javaMailSender; /** * 发送简单文本邮件 * * @param to 收件人邮箱地址 * @param subject 邮件主题 * @param content 邮件正文 */ public void sendSimpleEmail(String to, String subject, String content) { try { SimpleMailMessage message = new SimpleMailMessage(); message.setFrom("your-email@example.com"); // 设置发件人 message.setTo(to); // 设置收件人 message.setSubject(subject); // 设置主题 message.setText(content); // 设置内容 javaMailSender.send(message); logger.info("邮件已成功发送至 {}", to); } catch (Exception e) { logger.error("邮件发送失败", e); } } /** * 发送 HTML 格式的富文本邮件 * * @param to 收件人邮箱地址 * @param subject 邮件主题 * @param htmlContent 富文本内容 */ public void sendHtmlEmail(String to, String subject, String htmlContent) { try { MimeMessage mimeMessage = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); helper.setFrom("your-email@example.com"); helper.setTo(to); helper.setSubject(subject); helper.setText(htmlContent, true); // 第二个参数设置为 true 表示支持 HTML 格式 javaMailSender.send(mimeMessage); logger.info("HTML 邮件已成功发送至 {}", to); } catch (Exception e) { logger.error("HTML 邮件发送失败", e); } } } ``` --- #### 4. 测试邮件发送功能 编写一个 Controller 或测试方法调用上述 Service 方法完成邮件发送。 ##### TestController.java 示例: ```java import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController public class TestController { @Autowired private MailService mailService; @GetMapping("/send-email") public String sendEmail(@RequestParam String to) { String subject = "测试邮件"; String content = "这是来自 Spring Cloud 项目的测试邮件!"; mailService.sendSimpleEmail(to, subject, content); return "邮件已发送至:" + to; } @GetMapping("/send-html-email") public String sendHtmlEmail(@RequestParam String to) { String subject = "HTML 测试邮件"; String htmlContent = "<h1>Hello!</h1><p>这是一个 HTML 格式的测试邮件。</p>"; mailService.sendHtmlEmail(to, subject, htmlContent); return "HTML 邮件已发送至:" + to; } } ``` 访问 `/send-email?to=recipient@example.com` 即可触发邮件发送请求。 --- #### 5. 使用 SkyWalking 告警数据动态发送邮件(可选) 如果有集成 Apache SkyWalking 并希望基于其告警事件自动发送通知邮件,可以在接收到告警 DTO 数据后调用邮件发送接口。例如,在处理 `AlarmMessageDto` 对象时,提取必要字段拼接成邮件正文中的一部分[^4]。 --- ### 总结 通过以上步骤即可在 Spring Cloud 项目中快速实现基础的邮件发送功能,并可根据实际需求进一步扩展复杂场景下的邮件模板渲染、附件上传等功能。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值