1. 程式人生 > >13.Springboot 之 JavaMailSender傳送電子郵件

13.Springboot 之 JavaMailSender傳送電子郵件

在很多網站系統應用中,電子郵件的傳送應該非常常見,如:驗證碼傳送、密碼找回郵件傳送、事件通知郵件傳送等。

下面簡單介紹一下在Springboot的開發中如何使用JavaMailSender傳送電子郵件。

引入Maven依賴包

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

使用163郵箱傳送郵件

  • 配置檔案
#JavaMailSender 郵件傳送的配置
#spring.mail.host=smtp.exmail.qq.com spring.mail.host=smtp.163.com [email protected] spring.mail.password=your-password spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true spring.mail.properties.mail.smtp.starttls.required=true

注意:這裡需要將和your-password

修改成自己的163的郵箱地址和對應密碼

  • 簡潔郵件傳送
@RunWith(SpringRunner.class)
@SpringBootTest
@ActiveProfiles("163")
public class My163MailTest {

    @Autowired
    private JavaMailSender javaMailSender;

    @Value("${spring.mail.username}")
    private String username;

    @Test
    public void testSendSimple() {
        SimpleMailMessage message = new
SimpleMailMessage(); message.setFrom(username); message.setTo("[email protected]"); message.setSubject("標題:測試標題"); message.setText("測試內容部份"); javaMailSender.send(message); } }

注意:setFrom處必須填寫自己的郵箱地址,否則會報553錯誤,不過這裡使用了讀取配置檔案中的配置,則不用修改。

只需要使用在private JavaMailSender javaMailSender;上即可通過依賴注入的方式創建出JavaMailSender的物件。

使用QQ郵箱傳送郵件

可能使用QQ郵箱傳送郵件的情況比較多(大家都在用),下面就個人理解做下簡單描述。

  • 配置檔案
#JavaMailSender 郵件傳送的配置
spring.mail.host=smtp.qq.com
spring.mail.username=393156105@qq.com
spring.mail.password=tdckceislhfibhbbb
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.password處的值是需要在郵箱設定裡面生成的授權碼,這個不是真實的密碼。

  • 傳送簡潔郵件
@Autowired
private JavaMailSender javaMailSender;

@Value("${spring.mail.username}")
private String username;

@Test
public void testSendSimple() {
    SimpleMailMessage message = new SimpleMailMessage();
    message.setFrom(username);
    message.setTo("[email protected]");
    message.setSubject("標題:測試標題");
    message.setText("測試內容部份");
    javaMailSender.send(message);
}

注意:這個例子跟使用163來發送的郵件是一樣的效果,但是在使用QQ來發送郵件是可能會報handshake_failure相關的錯誤,這是由於認證失敗導致的,解決辦法:

  1. 下載1.7版本的JCE,點選這裡
  2. 將下載下來的zip檔案中的local_policy.jarUS_export_policy.jar複製到JDK安裝目錄下的\jre\lib\security目錄中,原本是存在這兩個檔案的,這裡需要替換下。
  • 傳送HTML格式的郵件
@Test
public void testSendHtml() {
    MimeMessage message = null;
    try {
        message = javaMailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message, true);
        helper.setFrom(username);
        helper.setTo("[email protected]");
        helper.setSubject("標題:傳送Html內容");

        StringBuffer sb = new StringBuffer();
        sb.append("<h1>大標題-h1</h1>")
          .append("<p style='color:#F00'>紅色字</p>")
          .append("<p style='text-align:right'>右對齊</p>");
        helper.setText(sb.toString(), true);
    } catch (MessagingException e) {
        e.printStackTrace();
    }

    javaMailSender.send(message);
}

注意:這裡建立的是MimeMessageHelper,且在呼叫setText時需要在第二個引數傳入true,這樣才會使用HTML格式傳送郵件

  • 設定收件方顯示的名稱
@Test
public void testSendByName() {
    MimeMessage message = null;
    try {
        message = javaMailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message, true);
        helper.setFrom(new InternetAddress(username, "知識林", "UTF-8"));
        helper.setTo("[email protected]");
        helper.setSubject("標題:傳送Html內容");

        StringBuffer sb = new StringBuffer();
        sb.append("<h1>大標題-h1</h1>")
                .append("<p style='color:#F00'>紅色字</p>")
                .append("<p style='text-align:right'>右對齊</p>");
        helper.setText(sb.toString(), true);
    } catch (Exception e) {
        e.printStackTrace();
    }

    javaMailSender.send(message);
}

注意:與上一個例子基本一樣,只是將helper.setFrom(username);修改成helper.setFrom(new InternetAddress(username, "知識林", "UTF-8"));,這樣收件方顯示的名稱就是知識林(前提是收件方沒有存發件方郵件)。

相關推薦

13.Springboot JavaMailSender傳送電子郵件

在很多網站系統應用中,電子郵件的傳送應該非常常見,如:驗證碼傳送、密碼找回郵件傳送、事件通知郵件傳送等。 下面簡單介紹一下在Springboot的開發中如何使用JavaMailSender傳送電子郵件。 引入Maven依賴包 <dependency> <groupId>or

Springboot JavaMailSender傳送電子郵件

本文章來自【知識林】 在很多網站系統應用中,電子郵件的傳送應該非常常見,如:驗證碼傳送、密碼找回郵件傳送、事件通知郵件傳送等。 下面簡單介紹一下在Springboot的開發中如何使用JavaMail

ActiveMQ與Spring的整合非同步傳送電子郵件

1、ActiveMQ與Spring整合,訊息生產方的程式碼       1.1    專案的目錄       1.2   config.properties  ## ActiveMQ Config activemq.brokerURL=tcp\://192.168.2.

C# 網路程式設計基於SMTP傳送電子郵件

        本文主要講述基於C#網路程式設計的傳送郵件的程式設計,郵件傳送功能是基於郵件協議的,常見的電子郵件協議有SMTP(簡單郵件傳輸協議)、POP3(郵局協議)、IMAP(Internet郵件訪問協議),文章主要參考周存傑的《C#網路程式設計例項教程》.這也是最後

springboot利用JavaMailSender傳送郵件

之前用javamaill的方式傳送郵件,比較繁瑣,現在利用spring-mail來發送郵件,非常簡單 1.引入pom依賴,分別是freemarker郵件模板和spring-maill依賴 <!-- Spring Boot Freemarker 依賴,傳送HTML格式

C#傳送電子郵件(SMTP)及outlook.com賬號概要

這是關於c#傳送電子郵件(SMTP)的技術筆記,以”簡報“形式呈現。 因為最後成功通過outlook.com傳送了郵件,所以,我覺得還是有必要 記錄一下其中的要點。 一、技術核心 .net Framework 提供的兩個類:SmtpClient和MailAdd

Android實現快速傳送電子郵件

最近有朋友有需求是通過apk傳送郵件,我心想這怎麼可以實現?然後就研究了一番,最後得出結論是可行的! 確實可以自己的手機上定義主題和內容或者附件,然後傳送給對應的郵箱!詳細步驟傾聽我一一道來 我們以A郵箱傳送郵件給B郵箱為例: 1 開啟A郵箱的POP3服務 每個郵箱都有POP3服

呼叫Mailgun API傳送電子郵件一例

Mailgun提供了免費的郵件傳送服務,適合拿來做通知提醒一類的服務。免費版預設支援每天傳送多達300封郵件,最多可以發10,000封。 註冊方法:訪問 https://www.mailgun.com/email-api , 點Sign Up Free 輸入基本資訊,包括要接收郵

net類庫中傳送電子郵件的方法總結

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

PHP 傳送電子郵件

PHP 傳送電子郵件 PHP 允許您從指令碼直接傳送電子郵件。 。。。。。。。。。。。。。 PHP mail() 函式 PHP mail() 函式用於從指令碼中傳送電子郵件。 語法:mail(to,subject,message,headers,parameters) to 必需。規定 email

tp5傳送電子郵件

一、開啟郵箱的SMTP服務 QQ郵箱設定方式: 點選設定: 點選賬戶 在最下面,有個開啟 點開啟會彈出個窗,上面有密碼,記下密碼 163郵箱設定方式: 其他郵箱都一樣,獲取授權碼就行 二、下載類庫檔案 https://gi

13-SpringBoot資料庫(四)——事務處理:隔離級別與傳播行為

SpringBoot之資料庫(四)——事務處理:隔離級別與傳播行為 1. 隔離級別(isolation) 1.1 未提交讀 1.2 讀寫提交 1.3 可重複讀 1.4 序列化 1.5 使用合理的隔離級別

使用Java傳送電子郵件

所需jar包 <dependency> <groupId>javax.mail</groupId> <artifactId>javax.mail-api</artifactId

.NET 傳送電子郵件

static void Main(string[] args) { ///先引入 using System.Net.Mail; ///傳送郵件 using (MailMessage mailMessage = ne

使用SMTP傳送電子郵件

描述SMTP的基本操作,有如下常見的情景。假如Alice想給Bob傳送一封簡單的ASCII報文: 1)Alice啟動她的郵件代理伺服器並提供Bob的郵件地址(例如:***@163.com),撰寫郵件,通過使用者代理髮送該郵件。 2)Alice的使用者代理把報文傳送給Ali

vb.net 傳送電子郵件方法 無需改動 直接Ctrl C V

Public Function Emilsend(ByVal arrp As Array) As Boolean Dim tConsultname As String = G_objService.SB_MyTrim(arrp(0)) Di

使用Python傳送電子郵件

SMTP傳送郵件: 我這裡使用的qq郵箱伺服器,所以執行之前應先把qq郵箱中的相應服務開啟; 1.傳送文字郵件 #傳送文字郵件 import smtplib from email.mime.text import MIMEText from email.header

Servlet 傳送電子郵件

Servlet 傳送電子郵件 使用 Servlet 傳送一封電子郵件是很簡單的,但首先您必須在您的計算機上安裝 JavaMail API 和 Java Activation Framework)JAF)。 您可以從 Java 標準網站下載最新版本

PHP傳送電子郵件

今天學習了PHP的mail函式,並且利用它傳送傳送一些簡單點的郵件,下面 開始吧: 1、首先,應該配置自己的PHP檔案(也就是php.ini檔案)然後需要安裝sendmail 2、下載後將其解壓到任意一個目錄下面,我的是和php相關檔案放在一起了(自己建立一個資料夾sen

用flask開發個人部落格(24)—— flask中使用Flask_Mail傳送電子郵件

        flask中使用Flask-Mail提供對電子郵件的支援,下面將分步驟測試flask中傳送電子郵件的功能: 1 配置SMTP伺服器的資訊         我們需要藉助flask程式例項app的config屬性來配置電子郵件的SMTP伺服器資訊,其中主要的配置