Home | 简体中文 | 繁体中文 | 杂文 | Github | 知乎专栏 | Facebook | Linkedin | Youtube | 打赏(Donations) | About
知乎专栏

33.3. 用法详解

33.3.1. 开启 DEBUG

		
spring.mail.properties.mail.debug=true
		
			

33.3.2. SMTP SSL 配置

ssl smtp 配置 spring.mail.properties.mail.smtp.ssl.enable=true

			
# Email
spring.mail.host=smtp.exmail.qq.com
spring.mail.username=chenjingfeng@netkiller.cn
spring.mail.password=h2yVg972h5XJ2vyi
spring.mail.port=465
spring.mail.default-encoding=UTF-8
spring.mail.properties.mail.transport.protocol=smtp
spring.mail.properties.mail.smtp.connectiontimeout=5000
spring.mail.properties.mail.smtp.timeout=3000
spring.mail.properties.mail.smtp.writetimeout=5000
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.ssl.enable=true
spring.mail.properties.mail.debug=true
			
			

33.3.3. SMTP TLS 配置

tls smtp 配置 spring.mail.properties.mail.smtp.starttls.enable=true

			
# Email
spring.mail.host=smtp.exmail.qq.com
spring.mail.username=chenjingfeng@netkiller.cn
spring.mail.password=h2yVg972h5XJ2vyi
spring.mail.port=465
spring.mail.default-encoding=UTF-8
spring.mail.properties.mail.transport.protocol=smtp
spring.mail.properties.mail.smtp.connectiontimeout=5000
spring.mail.properties.mail.smtp.timeout=3000
spring.mail.properties.mail.smtp.writetimeout=5000
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.debug=true
			
			

33.3.4. 发送文本邮件

发送文本邮件

			
package cn.netkiller.component;

import jakarta.mail.MessagingException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.MailException;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.resilience.annotation.Retryable;
import org.springframework.stereotype.Component;

@Component
public class EmailComponent {

    @Autowired
    private JavaMailSender javaMailSender;

    @Retryable(value = {MessagingException.class})
    public void sendTextEmail(String to, String subject, String body) {

        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
        simpleMailMessage.setFrom("chenjingfeng@netkiller.cn");
        simpleMailMessage.setTo("netkiller@msn.com");
        simpleMailMessage.setSubject("Hello");
        simpleMailMessage.setText("Hello world");
        try {
            javaMailSender.send(simpleMailMessage);
        } catch (MailException ex) {
            System.err.println(ex.getMessage());
        }
    }
}
			
			

33.3.5. 发送HTML邮件

			
        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");

        mimeMessageHelper.setFrom(from);
        mimeMessageHelper.setTo(to);
        mimeMessageHelper.setSubject(subject);
        mimeMessageHelper.setText(body, true); // true = 支持HTML			
			
			

33.3.6. 发送带附件的邮件

		
package cn.netkiller.component;

import jakarta.mail.MessagingException;
import jakarta.mail.internet.MimeMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.core.io.InputStreamSource;
import org.springframework.mail.MailException;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.resilience.annotation.Retryable;
import org.springframework.stereotype.Component;

import java.io.InputStream;
import java.net.URL;

@Component
public class EmailComponent {

    //    private final String from = "NoReply <noreply@elastolink.com>";
    private final String from = "Elastolink<chenjingfeng@weilaizhihui.com.cn>";
    @Autowired
    private JavaMailSender javaMailSender;

    @Retryable(value = {MessagingException.class})
    public void sendTextEmail(String to, String subject, String body) {

        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
        simpleMailMessage.setFrom(from);
        simpleMailMessage.setTo(to);
        simpleMailMessage.setSubject("Hello");
        simpleMailMessage.setText("thank you for placing order. Your order number is ");
        try {
            javaMailSender.send(simpleMailMessage);
        } catch (MailException ex) {
            System.err.println(ex.getMessage());
        }
    }

    public void sendEmailWithAttachment(String to, String subject, String body, String filePath) throws Exception {

        MimeMessage mimeMessage = javaMailSender.createMimeMessage();

        // 第二个参数 true = 开启附件模式
        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");

        mimeMessageHelper.setFrom(from);
        mimeMessageHelper.setTo(to);
        mimeMessageHelper.setSubject(subject);
        mimeMessageHelper.setText(body, true); // true = 支持HTML

        // =============================================
        // 核心:从 URL 读取流,直接作为附件发送(不存本地)
        // =============================================
        try (InputStream inputStream = new URL(filePath).openStream()) {
            InputStreamSource source = new ByteArrayResource(inputStream.readAllBytes());
            mimeMessageHelper.addAttachment("附件测试.png", source);
        }

        javaMailSender.send(mimeMessage);
        
    }
}