diff --git a/src/main/java/com/youlai/boot/support/mail/service/EmailService.java b/src/main/java/com/youlai/boot/support/mail/service/EmailService.java index 6e1ebc8c..e1d81e41 100644 --- a/src/main/java/com/youlai/boot/support/mail/service/EmailService.java +++ b/src/main/java/com/youlai/boot/support/mail/service/EmailService.java @@ -19,6 +19,15 @@ public interface EmailService { */ void send(String to, String subject, String text); + /** + * 发送HTML格式的邮件。 + * + * @param to 收件人邮箱 + * @param subject 邮件主题 + * @param html 邮件正文(HTML 格式) + */ + void sendHtmlMail(String to, String subject, String html); + /** * 发送带附件的邮件。 * diff --git a/src/main/java/com/youlai/boot/support/mail/service/impl/SmtpEmailServiceImpl.java b/src/main/java/com/youlai/boot/support/mail/service/impl/SmtpEmailServiceImpl.java index 060157f7..8e3e8214 100644 --- a/src/main/java/com/youlai/boot/support/mail/service/impl/SmtpEmailServiceImpl.java +++ b/src/main/java/com/youlai/boot/support/mail/service/impl/SmtpEmailServiceImpl.java @@ -3,7 +3,9 @@ package com.youlai.boot.support.mail.service.impl; import com.youlai.boot.support.mail.MailProperties; import com.youlai.boot.support.mail.service.EmailService; import jakarta.mail.MessagingException; +import jakarta.mail.internet.MimeBodyPart; import jakarta.mail.internet.MimeMessage; +import jakarta.mail.internet.MimeMultipart; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -14,6 +16,7 @@ import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Service; import java.io.File; +import java.nio.charset.StandardCharsets; /** * SMTP 邮件服务。 @@ -50,6 +53,36 @@ public class SmtpEmailServiceImpl implements EmailService { } } + /** + * 发送HTML格式的邮件 + * + * @param to 收件人地址 + * @param subject 邮件主题 + * @param html html格式的内容 + * @return 是否发送成功 + */ + @Override + public void sendHtmlMail(String to, String subject, String html) { + try { + MimeMessage message = mailSender.createMimeMessage(); + // 设置发件人、收件人和主题 + message.setFrom(mailProperties.getFrom()); + message.setRecipients(jakarta.mail.Message.RecipientType.TO, to); + message.setSubject(subject, StandardCharsets.UTF_8.name()); + // 创建 MimeMultipart 容器 + MimeMultipart multipart = new MimeMultipart("related"); + // 创建 HTML 内容部分 + MimeBodyPart htmlPart = new MimeBodyPart(); + htmlPart.setContent(html, "text/html; charset=UTF-8"); + multipart.addBodyPart(htmlPart); + // 设置消息内容 + message.setContent(multipart); + mailSender.send(message); + } catch (Exception e) { + log.error("发送Html邮件失败{}", e.getMessage()); + } + } + /** * 发送带附件的 HTML 邮件。 */