Spring Boot 使用465埠傳送郵件
最近做的一個專案中有個郵件傳送功能,傳送郵件預設是25埠,但是公司用的伺服器是阿里雲的,會遮蔽25埠,所以部署到伺服器後連線不上郵件伺服器,需要使用SSL協議(使用465埠)。
需要注意的是Spring Boot 的版本問題,低版本只支援使用預設的25埠進行傳送,或者使用SSL協議時的配置有所區別,我的Spring Boot 的版本資訊最開始是1.3.0.RELEASE,在開發完成後測試的時候發現使用465埠死活連不上郵件伺服器,只能通過25埠傳送,對比了以前我做的專案,發現只有boot的版本不一樣,於是我修改了一下版本資訊,修改後如下所示:
-
<parent>
-
<groupId>org.springframework.boot</groupId>
-
<artifactId>spring-boot-starter-parent</artifactId>
-
<version>1.4.7.RELEASE</version>
-
</parent>
程式碼實現細節如下
一、新增maven依賴
-
<dependency>
-
<groupId>org.springframework.boot</groupId>
-
<artifactId>spring-boot-starter-mail</artifactId>
-
</dependency>
二、新增配置資訊
-
#郵件配置
-
spring.mail.host=郵件伺服器地址
-
spring.mail.username=使用者名稱
-
spring.mail.password=密碼
-
spring.mail.default-encoding=UTF-8
-
#登入伺服器是否需要認證
-
spring.mail.properties.mail.smtp.auth=true
-
#SSL證書Socket工廠
-
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
-
#使用SMTPS協議465埠
-
spring.mail.properties.mail.smtp.socketFactory.port=465
-
#顯示在收件人郵箱裡面的發件人名稱
-
spring.mail.self.username=使用者名稱
三、Java程式碼
-
import java.io.File;
-
import java.util.List;
-
import javax.mail.MessagingException;
-
import javax.mail.internet.InternetAddress;
-
import javax.mail.internet.MimeMessage;
-
import javax.mail.internet.MimeMessage.RecipientType;
-
import org.apache.commons.lang3.StringUtils;
-
import org.springframework.beans.factory.annotation.Autowired;
-
import org.springframework.beans.factory.annotation.Value;
-
import org.springframework.mail.javamail.JavaMailSender;
-
import org.springframework.mail.javamail.MimeMessageHelper;
-
import org.springframework.stereotype.Service;
-
/**
-
* @類名: MailSender<br>
-
* @描述: 郵件傳送<br>
-
*/
-
@Service
-
public class MailSendService {
-
@Autowired
-
JavaMailSender mailSender;
-
//發件人名稱設定
-
@Value("${spring.mail.self.username}")
-
private String sendUser;
-
public void sendEmail(String toMail, String title, String content) throws MessagingException {
-
final MimeMessage mimeMessage = mailSender.createMimeMessage();
-
final MimeMessageHelper message = new MimeMessageHelper(mimeMessage);
-
message.setFrom(sendUser);
-
message.setTo(toMail);
-
message.setSubject(title);
-
message.setText(content);
-
mailSender.send(mimeMessage);
-
}
-
/**
-
* @方法名: sendSimpleMail<br>
-
* @描述: 傳送普通文字格式的郵件<br>
-
* @param toMail 收件人,多個用英文格式逗號分隔
-
* @param replyTo 抄送人,多個用英文格式逗號分隔
-
* @param title 郵件主題
-
* @param content 郵件內容
-
* @param flies 附件
-
* @throws Exception
-
*/
-
public void sendSimpleMail(String toMail, String replyTo, String title, String content, List<File> files) throws Exception {
-
final MimeMessage mimeMessage = mailSender.createMimeMessage();
-
final MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
-
helper.setFrom(sendUser);
-
helper.setSubject(title);
-
helper.setText(content);
-
//設定多個收件人
-
String[] toAddress = toMail.split(",");
-
helper.setTo(toAddress);
-
//設定多個抄送
-
if(StringUtils.isNotBlank(replyTo)) {
-
//helper.setReplyTo(replyTo);
-
InternetAddress[] internetAddressCC = InternetAddress.parse(replyTo);
-
mimeMessage.setReplyTo(internetAddressCC);
-
}
-
//新增附件
-
if(null != files) {
-
for (File file : files) {
-
helper.addAttachment(file.getName(), file);
-
}
-
}
-
mailSender.send(mimeMessage);
-
}
-
/**
-
* @方法名: sendHtmlMail<br>
-
* @描述: 傳送HTML格式的郵件<br>
-
* @param toMail 收件人,多個用英文格式逗號分隔
-
* @param replyTo 抄送人,多個用英文格式逗號分隔
-
* @param title 郵件主題
-
* @param htmlContent 郵件內容
-
* @param files 附件
-
* @throws Exception
-
*/
-
public void sendHtmlMail(String toMail, String replyTo, String title, String htmlContent, List<File> files) throws Exception {
-
final MimeMessage mimeMessage = mailSender.createMimeMessage();
-
final MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
-
helper.setFrom(sendUser);
-
helper.setSubject(title);
-
helper.setText(htmlContent, true);
-
//設定多個收件人
-
String[] toAddress = toMail.split(",");
-
helper.setTo(toAddress);
-
//設定多個抄送
-
if(StringUtils.isNotBlank(replyTo)) {
-
//helper.setReplyTo(replyTo);
-
InternetAddress[] internetAddressCC = InternetAddress.parse(replyTo);
-
mimeMessage.setRecipients(RecipientType.CC,internetAddressCC);
-
}
-
//新增附件
-
if(null != files) {
-
for (File file : files) {
-
helper.addAttachment(file.getName(), file);
-
}
-
}
-
mailSender.send(mimeMessage);
-
}