Spring boot 整合JavaMail服務傳送郵件
JavaMail是SUN提供給廣大Java開發人員的一款郵件傳送和接受的一款開源類庫,支援常用的郵件協議,如:SMTP、POP3、IMAP,開發人員使用JavaMail編寫郵件程式時,不再需要考慮底層的通訊細節如:Socket而是關注在邏輯層面。JavaMail可以傳送各種複雜MIME格式的郵件內容,注意JavaMail僅支援JDK4及以上版本。雖然JavaMail是JDK的API但它並沒有直接加入JDK中。
實現方法:
一、新增依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
二、新增配置檔案(YAML格式)
stmp:
host: smtp.163.com
account: [email protected]
password: xxxxxxx
mail:
smtp:
auth: true
timeout: 25000
multipart:
enabled: true
max-file-size: 50mb
max-request-size: 50mb
三、建立實體類
public class EmailEntity { private String receiver; private String subject; private String text; private String content; public String getReceiver() { return receiver; } public void setReceiver(String receiver) { this.receiver = receiver; } public String getSubject() { return subject; } public void setSubject(String subject) { this.subject = subject; } public String getText() { return text; } public void setText(String text) { this.text = text; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } }
四、註冊Bean
@Component public class EmailConfig { @Value("${stmp.host}") private String host; @Value("${stmp.account}") private String account; @Value("${stmp.password}") private String password; @Value("${mail.smtp.auth}") private String isAuth; @Value("${mail.smtp.timeout}") private String outTime; @Bean(name = "JavaMailSenderImpl") public JavaMailSenderImpl getMailSender() { JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl(); javaMailSender.setHost(host); javaMailSender.setUsername(account); javaMailSender.setPassword(password); Properties properties = new Properties(); properties.put("mail.smtp.auth", isAuth); properties.put("mail.smtp.timeout", outTime); javaMailSender.setJavaMailProperties(properties); return javaMailSender; } public void sendSimpleMail(EmailEntity email) { SimpleMailMessage simpleMailMessage = new SimpleMailMessage(); simpleMailMessage.setFrom(account); String receiver = email.getReceiver(); String receivers[] = receiver.split(";"); simpleMailMessage.setTo(receivers); simpleMailMessage.setSubject(email.getSubject()); simpleMailMessage.setText(email.getContent()); getMailSender().send(simpleMailMessage); } }
五、使用測試
@RestController
@RequestMapping("/api/email")
@Api("傳送Email介面")
public class ApiEmailController {
private static Logger log = LoggerFactory.getLogger(ApiEmailController.class);
@Autowired
EmailConfig mc;
@IgnoreAuth
@PostMapping("send")
public void testEmailConfig(){
EmailEntity email = new EmailEntity();
email.setReceiver("[email protected]");
email.setContent("welcome Email Sender");
email.setSubject("Spring Boot Java EE Developer");
mc.sendSimpleMail(email);
log.info("successful to send message!");
}
}
六、以上已經可以傳送簡單的郵件訊息。如果想要傳送比較複雜的郵件,比如:附件,圖片等。需要使用MimeMailMessage類實現。這裡只需修改註冊Bean時候新增這個功能即可,附程式碼如下:
@Component
public class EmailConfig {
@Value("${GaH.stmp.host}")
private String host;
@Value("${GaH.stmp.account}")
private String account;
@Value("${GaH.stmp.password}")
private String password;
@Value("${mail.smtp.auth}")
private String isAuth;
@Value("${mail.smtp.timeout}")
private String outTime;
@Value("${mail.attach.img}")
private String imgPath;
@Bean(name = "JavaMailSenderImpl")
public JavaMailSenderImpl getMailSender() {
JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
javaMailSender.setHost(host);
javaMailSender.setUsername(account);
javaMailSender.setPassword(password);
Properties properties = new Properties();
properties.put("mail.smtp.auth", isAuth);
properties.put("mail.smtp.timeout", outTime);
javaMailSender.setJavaMailProperties(properties);
return javaMailSender;
}
public void sendSimpleMail(MyEmail email) {
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setFrom(account);
String receiver = email.getReceiver();
String receivers[] = receiver.split(";");
simpleMailMessage.setTo(receivers);
simpleMailMessage.setSubject(email.getSubject());
simpleMailMessage.setText(email.getContent());
getMailSender().send(simpleMailMessage);
}
public void sendMimeMail(MyEmail email) {
MimeMessage mimMessage = getMailSender().createMimeMessage();
try {
MimeMessageHelper messageHelper = new MimeMessageHelper(mimMessage, true, "utf-8");
messageHelper.setFrom(account);
String receiver = email.getReceiver();
String receivers[] = receiver.split(";");
messageHelper.setTo(receivers);
messageHelper.setSubject(email.getSubject());
messageHelper.setText(email.getContent(), true);// Set the second
// Param to True
FileSystemResource res = new FileSystemResource(new File(imgPath));
messageHelper.addInline("attachFile", res);
getMailSender().send(mimMessage);
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
以上就是在SpringBoot專案內是使用JavaMail進行傳送簡單郵件,如果需要傳送HTML內容的郵件修改contentType(MailContentTypeEnum.HTML)然後content("html程式碼")即可。
相關推薦
Spring boot 整合JavaMail服務傳送郵件
JavaMail是SUN提供給廣大Java開發人員的一款郵件傳送和接受的一款開源類庫,支援常用的郵件協議,如:SMTP、POP3、IMAP,開發人員使用JavaMail編寫郵件程式時,不再需要考慮底層的通訊細節如:Socket而是關注在邏輯層面。JavaMail可以傳送各種
Spring Boot 使用465埠傳送郵件
最近做的一個專案中有個郵件傳送功能,傳送郵件預設是25埠,但是公司用的伺服器是阿里雲的,會遮蔽25埠,所以部署到伺服器後連線不上郵件伺服器,需要使用SSL協議(使用465埠)。 需要注意的是Spring Boot 的版本問題,低版本只支援使用預設的25埠進行傳
Spring Boot中使用JavaMailSender傳送郵件
相信使用過Spring的眾多開發者都知道Spring提供了非常好用的JavaMailSender介面實現郵件傳送。在Spring Boot的Starter模組中也為此提供了自動化配置。下面通過例項看看如何在Spring Boot中使用JavaMailSender傳送郵件。 快速入門 在Spring
spring boot 用javaMail傳送郵件,很多坑
直接傳送總是報錯 554 dt:spm 被163攔截,認為非法,抄送一份給自己就解決了。但是顯示抄送人,很煩。 service層 package com.llong.email.mail; import org.springframework.beans.factory.anno
Spring boot 整合郵件服務
新增依賴 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-
企業分布式微服務雲SpringCloud SpringBoot mybatis (十三)Spring Boot整合MyBatis
ech 字段 osc 操作 with public assert 連接 ref Spring中整合MyBatis就不多說了,最近大量使用Spring Boot,因此整理一下Spring Boot中整合MyBatis的步驟。搜了一下Spring Boot整合MyBatis的文
Spring Boot 整合之JavaMail
1.新增依賴 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId>
Spring Boot整合websocket實現群聊,點對點聊天,圖片傳送,音訊傳送
參考:基於https://blog.csdn.net/qq_38455201/article/details/80374712 基礎上進行新增圖片傳送和音訊傳送功能 單點圖片傳送: 單點音訊傳送: 音訊傳送相關js參考:https://github.
Spring(非boot)通過ssl傳送郵件
參考:https://blog.csdn.net/liguo9860/article/details/6874040 我這裡就說一下使用Spring的JavaMailSender如何實現 1. 配置JavaMailSender @Bean public JavaM
Spring Boot 整合dubbo與zookeeper實現不同專案之間資料通過服務的傳遞
一、安裝zookeeper 1、下載路徑:http://mirrors.hust.edu.cn/apache/zookeeper/ 可以自己選擇版本進行下載(同時支援windows和linux) 2、目錄結構 3、修改conf下的配置檔案zoo.cfg 4、
SpringCloud學習筆記015---Spring Boot整合RabbitMQ傳送接收JSON
在Spring Boot 整合RabbitMQ一文中介紹瞭如何整合RabbitMQ。預設情況下發送的訊息是轉換為位元組碼,這裡介紹一下如何傳送JSON資料。 ObjectMapper 最簡單傳送JSON資料的方式是把物件使用ObjectMapper等JSON工具類把物件轉
spring-boot 整合kafka單節點訊息傳送與接收
springboot還處於學習階段,又同時在學習kafka,兩者結合,繼續學習。 1、官網下載kafka 2、解壓 3、對於單節點來說,按照官網上操作即可實現訊息的傳送和接收。 但是對於客戶端,是通過 @KafkaListener 註解監聽生產者傳送的訊
SpringCloud SpringBoot mybatis 分散式微服務(十四)Spring Boot整合MyBatis
Spring中整合MyBatis就不多說了,最近大量使用Spring Boot,因此整理一下Spring Boot中整合MyBatis的步驟。搜了一下Spring Boot整合MyBatis的文章,方法都比較老,比較繁瑣。查了一下文件,實際已經支援較為簡單的整合與使用。下面就
spring 整合 activeMQ非同步傳送郵件
一、訊息佇列的作用 1、非同步處理 2、流量削峰 3、應用解耦 4、日誌處理 二、此處展示的是非同步處理場景 1、構建maven專案,此處不做多餘的說明了,匯入MQ相關的jar包,注意版本的問題,這裡費了好多時間解決衝突 <!-- MQ start--&
spring boot整合jpa構建微服務以及服務呼叫
一、Maven構建專案 1、訪問http://start.spring.io/ 2、選擇構建專案的基本資訊,參考下圖: 3、點選Generate Project下載專案壓縮包 4、下載後解壓到本地,並以Import -> Existing Maven Projec
Spring+javamail+velocity傳送郵件
最精做到一個專案需要用到郵箱驗證,所研究了一下 首先需要jar包: org.springframework.context.support-3.1.2.RELEASE.jar (封裝了javamail的相關api) mail.jar; velocity-1.4.jar
spring boot 整合activemq 進行服務端訊息推送(web頁面)
最近公司的專案裡有需要服務端向web端實時推送訊息的需求,網上搜索了一番,有前端頁面通過定時任務向後臺傳送ajax請求重新整理,有使用第三方提供的訊息服務(GoEasy),前者因為會有很多請求是無用的,容易加大伺服器負荷造成宕機,後者現在收費了(免費的也只能用一
ActiveMQ與Spring的整合之非同步傳送電子郵件
1、ActiveMQ與Spring整合,訊息生產方的程式碼 1.1 專案的目錄 1.2 config.properties ## ActiveMQ Config activemq.brokerURL=tcp\://192.168.2.
Spring boot整合mybatis實現Restful服務demo
首先要宣告,這個demo很大程度上參考了這篇文章: 所以把它歸為轉載之列。 首先建立資料表並插入一條資料(資料庫名隨意): DROP TABLE IF EXISTS `city`; CREATE TABLE `city` ( `id` int(10) unsig
spring-boot整合dubbo:Spring-boot-dubbo-starter
hub pack 自動配置 china end service get exceptio 整合 為什麽要寫這個小工具 如果你用過Spring-boot來提供dubbo服務,相信使用中有很多“不爽”的地方。既然使用spring boot,那麽能用註解的地方絕不用xml配置,這