springboot實戰代碼之【使用JavaMail發送郵件的封裝】,拿來即用。
1.導入依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2.加入配置
spring:
mail:
host: xxx.com
username: uuu
password: pppp
port: 25
properties:
mail:
smtp:
auth: false
# 下面這倆是我自己加的配置,springboot不存在
# 發件人郵箱
from: [email protected]
nickname: JIMO
3.發郵件工具類
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.util.List;
/**
* send mail
*
* @author jimo
* @version 1.0.0
*/
@Slf4j
@Service
public class MailService {
/**
* mail sender
*/
private final JavaMailSender mailSender;
/**
* from who
*/
@Value("${spring.mail.from}")
private String from;
/**
* from username
*/
@Value("${spring.mail.nickname}")
private String nickname;
/**
* 構造
*/
public MailService(JavaMailSender mailSender) {
this.mailSender = mailSender;
}
/**
* send simple mail
*/
public void sendSimpleMail(String subject, String body, String... to) {
final SimpleMailMessage msg = new SimpleMailMessage();
msg.setFrom(from);
msg.setSubject(subject);
msg.setText(body);
msg.setTo(to);
mailSender.send(msg);
}
/**
* send mime mail
*
* @param attachments 附件文件的絕對路徑
*/
public void sendMimeMail(String to, String subject, String body, List<String> attachments) {
final MimeMessage msg = mailSender.createMimeMessage();
try {
final MimeMessageHelper helper = new MimeMessageHelper(msg, true);
helper.setFrom(from, nickname);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(body, true);
if (attachments != null && attachments.size() > 0) {
for (String attachment : attachments) {
helper.addAttachment(attachment.substring(attachment.lastIndexOf(File.separator) + 1),
new FileSystemResource(attachment));
}
}
mailSender.send(msg);
} catch (Exception e) {
log.error("mime郵件發送失敗", e);
throw new RuntimeException("發送郵件失敗:" + e.getMessage());
}
}
}
如果要發給多個人,使用重構函數即可:
public void setTo(String[] to)