| 知乎专栏 |
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
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
发送文本邮件
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());
}
}
}
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
mimeMessageHelper.setFrom(from);
mimeMessageHelper.setTo(to);
mimeMessageHelper.setSubject(subject);
mimeMessageHelper.setText(body, true); // true = 支持HTML
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);
}
}