建设网站海报文案,企业网站 asp源码,门户网站地方生活门户有哪些,怎么在平台上做推广使用SpringBoot发送邮件 文章目录 使用SpringBoot发送邮件1. 获取网易邮箱服务的授权码2. 初始化项目maven部分web部分 3. 发送邮件填写配置EmailSendService [已解决]部署时连接超时附#xff1a;Docker脚本Dockerfile创建镜像启动容器 1. 获取网易邮箱服务的授权码 温馨提示…使用SpringBoot发送邮件 文章目录 使用SpringBoot发送邮件1. 获取网易邮箱服务的授权码2. 初始化项目maven部分web部分 3. 发送邮件填写配置EmailSendService [已解决]部署时连接超时附Docker脚本Dockerfile创建镜像启动容器 1. 获取网易邮箱服务的授权码 温馨提示找个地方保管好授权码。 2. 初始化项目
maven部分
这次用到的其实主要是Spring Boot Starter Mail别的都是为了方便测试才加的。
拿着这个pom文件新建一个demo,然后把资料里的src粘进来。
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion3.3.4/versionrelativePath//parentgroupIdcom.example/groupIdartifactIdemail-service/artifactIdversion1.0-SNAPSHOT/versiondependencies!-- Spring Boot Starter Web --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactIdversion3.3.4/version/dependency!-- Spring Boot Starter Mail --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-mail/artifactIdversion3.0.0/version/dependency!-- Spring Boot Configuration Processor --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-configuration-processor/artifactIdversion3.0.0/versionoptionaltrue/optional/dependency!-- Lombok --dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.24/versionscopeprovided/scope/dependency/dependenciesbuildplugins!-- Spring Boot Maven Plugin --plugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdversion3.3.4/version/plugin/plugins/build
/project
web部分
http://localhost:8080/api/email/sendVerificationCode
在浏览器上尝试访问这个地址如果看到Send email successfully!就证明初始化好了可以继续往后实现发邮件的代码。
3. 发送邮件
填写配置
在application.yaml里填写上发送邮件必不可少的配置
spring:mail:default-encoding: UTF-8host: smtp.163.comusername: 你的邮箱网易给你授权码乃个邮箱password: 你的授权码port: 25protocol: smtpEmailSendService
这里用的是发送验证码这个场景需要实现的主要是sendEmail,
要成功发送一个邮件必须写明↓所以封装了一个EmailDTO——方便传数据。 to发给谁from谁发的subject主题text内容 其余创建邮件消息对象并发送的代码因为简单用了每次都这么写所以先就这样了。另外提一下发邮件的时候是支持发HTML格式的内容的直接写在text里就行了你可以试试。
package com.example.email;import jakarta.mail.MessagingException;
import jakarta.mail.internet.MimeMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;/*** author urfread* date 2025-02-02 14:02*/
Service
public class EmailSendService {Value(${spring.mail.username})private String fromEmail;Autowiredprivate JavaMailSender mailSender;public boolean sendVerificationCode(String to){return sendEmail(EmailDTO.builder().from(fromEmail).to(to).subject(注册认证).text(Your verification code is 123456.).build());}private boolean sendEmail(EmailDTO emailDTO) {MimeMessage mimeMessage mailSender.createMimeMessage();try {MimeMessageHelper helper new MimeMessageHelper(mimeMessage, true, UTF-8);helper.setFrom(emailDTO.getFrom());helper.setTo(emailDTO.getTo());helper.setSubject(emailDTO.getSubject());helper.setText(emailDTO.getText(), true); // 第二个参数为 true 表示发送 HTML 格式的内容System.out.println(Sending email from: emailDTO.getFrom());System.out.println(Sending email to: emailDTO.getTo());System.out.println(Email subject: emailDTO.getSubject());mailSender.send(mimeMessage);System.out.println(Email sent successfully.);} catch (MessagingException e) {System.err.println(Failed to send email: e.getMessage());return false;}return true;}
}[已解决]部署时连接超时
把邮件服务器的端口改成465再用上SSL
spring:mail:default-encoding: UTF-8host: smtp.163.comusername: 你的邮箱password: 你的授权码port: 465 protocol: smtp properties:mail.smtp.socketFactory.class: javax.net.ssl.SSLSocketFactory # 启用 SSLmail.smtp.connectiontimeout: 5000 # 设置连接超时单位毫秒mail.smtp.timeout: 5000 # 设置读取超时单位毫秒mail.smtp.writetimeout: 5000 # 设置写入超时单位毫秒
logging:level:root: INFO附Docker脚本
Dockerfile
获取jar包点mvn里的install即可。
FROM openjdk:17-jdk-slim
WORKDIR /app
COPY 你的包名.jar app.jar
EXPOSE 9000
ENTRYPOINT [java, -jar, app.jar]创建镜像
docker build -t 镜像名:版本号 .启动容器
docker run -d -p 9000:8080 --name 容器名 镜像名