springboot发送邮件的方法

个人博客站链接 big学生-博客

package zks.autoemailback.util;

import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.stereotype.Component;
import zks.autoemailback.model.Email;
import zks.autoemailback.model.EmailConfig;

import jakarta.mail.internet.MimeMessage;

import org.springframework.mail.javamail.MimeMessageHelper;

import java.util.Properties;

@Component
public class EmailUtil {

    /**
     * 动态配置发送邮件
     *
     * @param to          收件人邮箱
     * @param email       邮件内容
     * @param emailConfig 邮箱配置信息
     */
    public void sendEmail(String to, Email email, EmailConfig emailConfig) {
        JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
        String host = "";
        switch (emailConfig.getType()) {
            case "Gmail":
                host = "smtp.gmail.com";
                break;
            case "QQ":
                host = "smtp.qq.com";
                break;
            case "企业QQ":
                host = "smtp.exmail.qq.com";
                break;
            default:
                host = "smtp.gmail.com";
        }

        // 设置SMTP服务器信息
        mailSender.setHost(host);
        mailSender.setPort(emailConfig.getPort());
        mailSender.setUsername(emailConfig.getUsername());
        mailSender.setPassword(emailConfig.getPassword());

        Properties props = mailSender.getJavaMailProperties();
        props.put("mail.transport.protocol", "smtp");
        props.put("mail.smtp.auth", "true");
        if (emailConfig.getPort() == 465) {
            props.put("mail.smtp.ssl.enable", "true");  // 如果需要SSL,如端口465
        } else {
            props.put("mail.smtp.starttls.enable", "true"); // 对于非SSL端口,如587,启用STARTTLS
        }
        props.put("mail.debug", "true");  // 开启调试模式,可在控制台查看发送细节

        // 判断标题是否为指定的内容,如果是,则发送 HTML 格式的邮件
//        if ("Champtrove Team Rings Starting at Just $80—Celebrate Your Victory NOW!".equals(email.getTitle()) || "THJhairfactory Cooperation Proposal".equals(email.getTitle()) || "2025 New Year Sale + Website Revamp - Champtrove Presents".equals(email.getTitle()) || "Don't forget your ring orders in Champtrove!".equals(email.getTitle())) {
        // 创建 MimeMessage 来发送 HTML 邮件
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        try {
            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); // true表示支持附件
            helper.setFrom(emailConfig.getUsername());
            helper.setTo(to);
            helper.setSubject(email.getTitle());
            helper.setText(email.getBody(), true); // 第二个参数设置为true表示HTML格式
        } catch (Exception e) {
            e.printStackTrace();
        }
        mailSender.send(mimeMessage);
//        } else {
//            // 发送普通文本邮件
//            SimpleMailMessage message = new SimpleMailMessage();
//            message.setFrom(emailConfig.getUsername());  // 动态设置发件人
//            message.setTo(to);
//            message.setSubject(email.getTitle());
//            message.setText(email.getBody());
//            mailSender.send(message);
//        }
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我的水卡丢了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值