1. 程式人生 > >SpringBoot(十一):SpringBoot傳送郵件

SpringBoot(十一):SpringBoot傳送郵件

之前一段時間沒有上CSDN發表,自己本地記在有道雲的,現在都發出來,希望對你們有幫助。

···

傳送郵件

一、依賴

<!-- javax.mail -->
<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.6.0</version>
</dependency>

二、郵箱配置

mail.smtp.auth
=true mail.transport.protocol=smtp mail.send.charset=UTF-8 mail.smtp.port=465 mail.is.ssl=true mail.host=smtp.163.com mail.auth.name=xx@163.com mail.auth.password= mail.smtp.timeout=5000

三、程式碼

工具類 EmailUtils


package cn.aduu.utils;

import com.sun.mail.util.MailSSLSocketFactory;
import org.slf4j.Logger;
import
org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.env.Environment; import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Component; import
javax.annotation.PostConstruct; import javax.mail.internet.MimeMessage; import java.io.File; import java.security.GeneralSecurityException; import java.util.List; import java.util.Map; import java.util.Properties; /** * @author zh * @ClassName cn.aduu.utils.EmailUtils * @Description */ @Component public class EmailUtils { private static final Logger logger = LoggerFactory.getLogger(EmailUtils.class); @Autowired private Environment env; private static String auth; private static String host; private static String protocol; private static int port; private static String authName; private static String password; private static boolean isSSL; private static String charset ; private static String timeout; @PostConstruct public void initParam () { auth = env.getProperty("mail.smtp.auth"); host = env.getProperty("mail.host"); protocol = env.getProperty("mail.transport.protocol"); port = env.getProperty("mail.smtp.port", Integer.class); authName = env.getProperty("mail.auth.name"); password = env.getProperty("mail.auth.password"); charset = env.getProperty("mail.send.charset"); isSSL = env.getProperty("mail.is.ssl", Boolean.class); timeout = env.getProperty("mail.smtp.timeout"); } /** * 傳送郵件 * @param subject 主題 * @param toUsers 收件人 * @param ccUsers 抄送 * @param content 郵件內容 * @param attachfiles 附件列表 List<Map<String, String>> key: name && file */ public static boolean sendEmail(String subject, String[] toUsers, String[] ccUsers, String content, List<Map<String, String>> attachfiles) { boolean flag = true; try { JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl(); javaMailSender.setHost(host); javaMailSender.setUsername(authName); javaMailSender.setPassword(password); javaMailSender.setDefaultEncoding(charset); javaMailSender.setProtocol(protocol); javaMailSender.setPort(port); Properties properties = new Properties(); properties.setProperty("mail.smtp.auth", auth); properties.setProperty("mail.smtp.timeout", timeout); if(isSSL){ MailSSLSocketFactory sf = null; try { sf = new MailSSLSocketFactory(); sf.setTrustAllHosts(true); properties.put("mail.smtp.ssl.enable", "true"); properties.put("mail.smtp.ssl.socketFactory", sf); } catch (GeneralSecurityException e) { e.printStackTrace(); } } javaMailSender.setJavaMailProperties(properties); MimeMessage mailMessage = javaMailSender.createMimeMessage(); MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage, true); messageHelper.setTo(toUsers); if (ccUsers != null && ccUsers.length > 0) { messageHelper.setCc(ccUsers); } messageHelper.setFrom(authName); messageHelper.setSubject(subject); messageHelper.setText(content, true); if (attachfiles != null && attachfiles.size() > 0) { for (Map<String, String> attachfile : attachfiles) { String attachfileName = attachfile.get("name"); File file = new File(attachfile.get("file")); messageHelper.addAttachment(attachfileName, file); } } javaMailSender.send(mailMessage); } catch (Exception e) { logger.error("傳送郵件失敗!", e); flag = false; } return flag; } }

四、測試

package cn.aduu.web;

import cn.aduu.utils.EmailUtils;
import com.fasterxml.jackson.core.JsonProcessingException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author zh
 * @ClassName cn.aduu.web.EmailController
 * @Description
 */
@RestController
public class EmailController {

    private static final Logger logger = LoggerFactory.getLogger(EmailController.class);

    @RequestMapping("sendEmail")
    public String sendEmail() throws JsonProcessingException {
        boolean isSend = EmailUtils.sendEmail("這是一封測試郵件", new String[]{"[email protected]"}, null, "<h3><a href='http://www.baidu.com'>百度一下,你就知道</a></h3>", null);
        return "傳送郵件:" + isSend;
    }


}

這裡寫圖片描述

這裡寫圖片描述

相關推薦

SpringBootSpringBoot傳送郵件

之前一段時間沒有上CSDN發表,自己本地記在有道雲的,現在都發出來,希望對你們有幫助。 ··· 傳送郵件 一、依賴 <!-- javax.mail --> <dependency> <grou

SpringBootSpringBoot整合Kafka

一、準備工作 提前說明:如果你執行出問題,請檢查Kafka的版本與SpringBoot的版本是否與我文中的一致,本文中的環境已經經過測試。 Kafka服務版本為 kafka_2.11-1.1.0 (Scala), 也就是1.1.0 SpringBoot版本:1.5.10.R

SpringBoot入門系列篇實現檔案上傳

前情提要 現在大多數的web開發基本都會用到檔案上傳這一個功能,檔案上傳分為單檔案上傳和多檔案上傳,下面就一一講解一下通過SpringBoot框架對兩種上傳的實現 SpringBoot實現單檔案上傳 首先建立一個html介面,包含一個for

SpringBoot-- 動態數據源

eterm 屬性 this runt ids 指定 之前 exception factory SpringBoot中使用動態數據源可以實現分布式中的分庫技術,比如查詢用戶 就在用戶庫中查詢,查詢訂單 就在訂單庫中查詢。 一、配置文件application.properti

起來學SpringBoot定時任務的使用

Quartz是一個功能豐富的開源作業排程庫,幾乎可以整合在任何Java應用程式中 - 從最小的獨立應用程式到最大的電子商務系統。Quartz可用於建立簡單或複雜的計劃,以執行數十,數百甚至數萬個作業; 將任務定義為標準Java元件的作業,這些元件可以執行幾乎任何

Springboot@ControllerAdvice全域性異常處理

前言:       @ControllerAdvice,用於全域性異常處理,減少程式碼入侵,必須在controller層丟擲來,若異常在程式碼中被抓住了,沒有丟擲來,是不起作用的。實現:     寫一個全域性異常類GlobalDefaultException,類上加註解@Re

ES[7.6.x]學習筆記SpringBoot結合

在前面的章節中,我們把ES的基本功能都給大家介紹完了,從ES的搭建、建立索引、分詞器、到資料的查詢,大家發現,我們都是通過ES的API去進行呼叫,那麼,我們在專案當中怎麼去使用ES呢?這一節,我們就看看ES如何與我們的SpringBoot專案結合。 ## 版本依賴 SpringBoot預設是有Elasti

EF學習筆記實施繼承

long cannot oid data- turn cati com list pac 學習總目錄:ASP.NET MVC5 及 EF6 學習筆記 - (目錄整理) 上篇鏈接:EF學習筆記(十) 處理並發 本篇原文鏈接:Implementing Inheritance 面

DockerDocker實戰部署HTTPS的Tomcat站點

pos 容器 image avi tor 基礎 oot stat ask 1、選擇基礎鏡像    docker pull tomcat:7.0-jre8 2、生成HTTPS證書   keytool -genkey -alias tomcat -keyalg RSA -key

R語言學習筆記廣義線性模型

學習筆記 Education 5.0 1.3 style only 可能性 div erro #Logistic 回歸 install.packages("AER") data(Affairs,package="AER") summary(Affairs) a

Python+Selenium筆記配置selenium Grid

find arch 自己 {} get 說明 前言 mon AC (一) 前言 Selenium Grid可以將測試分布在若幹個物理或虛擬機器上,從而實現分布方式或並行方式執行測試。 這個鏈接是官方的相關說明。 https://github.com/SeleniumHQ/s

Python筆記多線程

st2 pv操作 出現 end 談話 col 隊列大小 == done (二)和(三)不感興趣的可以跳過,這裏參考了《深入理解計算機系統》第一章和《Python核心編程》第四章 (一) 多線程編程 一個程序包含多個子任務,並且子任務之間相互獨立,讓這些子任務同時運

hadoop學習筆記MapReduce數據類型

筆記 ash all 記錄 write 一個 操作 png bool 一、序列化 1 hadoop自定義了數據類型,在hadoop中,所有的key/value類型必須實現Writable接口。有兩個方法,一個是write,一個是readFileds。分別用於讀(反序列化操

Android項目實戰moveTaskToBack(boolean ) 方法的使用

android項目 androi ID cti 項目實戰 htm www style 順序 原文:Android項目實戰(十一):moveTaskToBack(boolean ) 方法的使用當你開發的程序被按後退鍵退出的時候, 你肯定不想讓他就這麽被finish()吧,那麽

IntelliJ IDEA Debug的使用

答案 停止 mar val 圖標設計 art style 打印 top Debug模式是開發人員必會的一項調試程序的技能,用來追蹤代碼的運行流程,線上問題追蹤,程序運行異常定位調試,以及在運行過程中參數的變化。IDEA的debug對於新手如何快速上手呢? 一、基本介紹

java基礎學習總結自動裝箱和自動拆箱

自動拆箱和自動裝箱 Java為每種基本資料型別都提供了對應的包裝器型別。舉個例子: public class TestMain { public static void main(String[] args) { Integer i = 10; } }

javaweb學習筆記JSP1

目錄 jsp(1) 1.基本概念 1 .1Jsp的執行過程 1.2 JSP與servlet 2 JSP語法 2.1 Jsp模板 2.2 Jsp表示式 2.3 Jsp指令碼 2.4 Jsp宣告 2.5 Jsp註釋 jsp(1) 1.基本

學習筆記使用K-Means演算法檢測DGA域名

1.資料收集與清洗:同(十) 2.特徵化:同(十) 3.訓練樣本 model = KMeans(n_clusters = 2, random_state=random_state) y_pred = model.fit_predict(x)  4.效果驗證:使用TSNE將

linux系列nl命令

調整 寫到 實例 空行 格式 指定格式 指定 所有 tab 1、命令格式:   nl [選項] [文件] 2、命令功能:   nl(Number of Lines) 將指定的文件添加行號標註後寫到標準輸出。如果不指定文件或指定文件為"-" ,程序將從標準輸入讀取數據。

搭建自己的部落格新增根據日期篩選

之前有通過分類來篩選文章的功能,這次新增根據建立日期來篩選文章。 1、變化的部分 2、上程式碼 ul.blog-types,ul.blog-dates { list-style-type: none; } div.blog:not(:last-child) {