1. 程式人生 > >springboot-mail發郵件,不需要郵件伺服器

springboot-mail發郵件,不需要郵件伺服器

很簡單 步驟走起->

1.需要一個郵箱賬號,我以163郵箱為例,先開啟第三方服務後獲得密碼,後面用來郵箱登入

2.加入mail 依賴

3.properties配置賬號和第三方服務密碼(不是郵箱密碼,是第一步中的密碼)

4.簡單看下專案結構:

5.直接上serviceImpl

package com.idress.inter.impl;

import com.idress.inter.MailService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
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.Component;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;

@Component
public class MailServiceImpl implements MailService {

    private final Logger logger = LoggerFactory.getLogger(this.getClass());

    @Autowired
    private JavaMailSender mailSender;

    @Value("${spring.mail.from.addr}")
    private String from;//由誰發出郵件 is my

    @Override
    public void sendSimpleMail(String to, String subject, String content) {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom(from);
        message.setTo(to);
        message.setSubject(subject);
        message.setText(content);

        try {
            mailSender.send(message);
            logger.info("簡單郵件已經發送。");
        } catch (Exception e) {
            logger.error("傳送簡單郵件時發生異常!", e);
        }

    }

    //傳送html格式郵件
    @Override
    public void sendHtmlMail(String to, String subject, String content) {
        MimeMessage message = mailSender.createMimeMessage();
        try {
            //true表示需要建立一個multipart message
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(from);
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(content, true);

            mailSender.send(message);
            logger.info("html郵件傳送成功");
        } catch (MessagingException e) {
            logger.error("傳送html郵件時發生異常!", e);
        }
    }

    //傳送帶附件的郵件
    @Override
    public void sendAttachmentsMail(String to, String subject, String content, String filePath) {
        MimeMessage message = mailSender.createMimeMessage();

        try {
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(from);
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(content, true);

            FileSystemResource file = new FileSystemResource(new File(filePath));
            String fileName = filePath.substring(filePath.lastIndexOf(File.separator));
            helper.addAttachment(fileName, file);

            mailSender.send(message);
            logger.info("帶附件的郵件已經發送。");
        } catch (MessagingException e) {
            logger.error("傳送帶附件的郵件時發生異常!", e);
        }
    }

    /**
     * 嵌入靜態資源的郵件
     */
    @Override
    public void sendInlineResourceMail(String to, String subject, String content, String rscPath, String rscId) {
        MimeMessage message = mailSender.createMimeMessage();

        try {
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(from);
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(content, true);

            FileSystemResource res = new FileSystemResource(new File(rscPath));
            helper.addInline(rscId, res);

            mailSender.send(message);
            logger.info("嵌入靜態資源的郵件已經發送。");
        } catch (MessagingException e) {
            logger.error("傳送嵌入靜態資源的郵件時發生異常!", e);
        }
    }

6.junt測試走起

package com.idress;

import com.idress.inter.MailService;
import com.sun.xml.internal.bind.CycleRecoverable;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.core.env.Environment;
import org.springframework.test.context.junit4.SpringRunner;
import org.thymeleaf.context.Context;
import org.thymeleaf.spring4.SpringTemplateEngine;

@RunWith(SpringRunner.class)
@SpringBootTest
public class Sb10MailApplicationTests {

   @Autowired
   private MailService mailService;

   @Test
   public void contextLoads() {
      mailService.sendSimpleMail("[email protected]","恭喜你的簡歷被我們檢視"," 請您....");
   }

   @Test
   public void testHtmlMail() throws Exception{
      for (int i = 0; i < 25; i++) {

         String content = "<html>\n" +
               "<body>\n" +
               "    <h3>hello world ! 這是一封Html郵件!</h3>\n" +
               "</body>\n" +
               "</html>";
         mailService.sendHtmlMail("[email protected]", "test simple mail", content);
      }

   }
   //傳送待附件的郵件
   @Test
   public void sendAttachmentsMail() {
         String filePath = "E:\\img01.PNG";
         mailService.sendAttachmentsMail("[email protected]", "主題:帶附件的郵件", "有附件,請查收!", filePath);
   }

   @Test
   public void sendInlineResourceMail() {
      String rscId = "neo006";
      String content="<html><body>這是有圖片的郵件:<img src='cid:" + rscId + "' ></body></html>";
      String imgPath = "E:\\img01.PNG";

      mailService.sendInlineResourceMail("[email protected]", "主題:這是有圖片的郵件", content, imgPath, rscId);
   }

   //使用郵件模板

   @Autowired
   private SpringTemplateEngine templateEngine;

   @Test
   public void sendTemplateMail() {
      //建立郵件正文
      Context context = new Context();
      context.setVariable("id", "006");
      String emailContent = templateEngine.process("emailTemplate", context);

      mailService.sendHtmlMail("[email protected]","主題:這是模板郵件",emailContent);
   }
}

7.郵箱模板(thymeleaf)

一位大神 純潔的微笑

相關推薦

springboot-mail郵件需要郵件伺服器

很簡單 步驟走起-> 1.需要一個郵箱賬號,我以163郵箱為例,先開啟第三方服務後獲得密碼,後面用來郵箱登入 2.加入mail 依賴 3.properties配置賬號和第三方服務密碼(不是郵箱密碼,是第一步中的密碼) 4.簡單看下專案結構:

springboot mail 郵件

return help rac 記錄 artifact sina host wired ets 新開發了一個新的功能,要求使用java發送郵件,在此記錄下代碼,以方便後來者: 1、首先需要開通郵箱,開通smtp功能,我這邊使用的是新浪郵箱,試過163、qq,比較麻煩,後來看

Java Mail 送帶有附件的郵件

list body nts put releases debug 字段 sage multi 1、小編用的是163郵箱發送郵件,所以要先登錄163郵箱開啟POP3/SMTP/IMAP服務方法: 2、下載所需的java-mail 包 https://maven.java

布我的運維日常腳本需要每天登陸服務器了

運維腳本 linux運維腳本 linux運維必看 自動化運維 linux自動化 大家好出個血本,把畢生功力濃縮進一個運維腳本中每天定時執行腳本發送郵件到郵箱配合報警機制,基本不需要登陸服務器就可以了如指掌 好了,廢話不多說,直接貼腳本,裏面@是註解,別急,最後會告訴大家如何刪除 vi

delphi安裝pngimage控件需要安裝只需引用就行

-- ons div 菜單 -c home 文件夾 class alt delphi7的pngimage控件如何安裝 20 解壓後的安裝包如圖所示,求高人指點如何把它安到delphi7上,感激不盡 在路徑裏面引用你這個文件夾菜單--tools---library然

終端直接執行py文件需要python命令

one 終端 版本 腳本 linux版本 權限 pytho mission mis 然後給腳本文件運行權限,方法(1)chmod +x ./*.py方法(2)chmod 755 ./*.py (777也無所謂啦) 這個命令不去調整,會出現permission denied

clipboard兼容各個瀏覽器需要設置權限

blog button board on() scrip boa ons erro turn 解決方案:用clipboard.js插件 註意要引用clipboard.js文件 案例: 將文本賦值給剪切板 <button class="btn">

為什麽mysql設置了密碼之後本地還可以直接訪問需要輸入密碼就可以登錄數據庫了?

leg 訪問 cheng 重載 賬號登陸 為什麽 除了 msyql 用戶 轉自 http://blog.csdn.net/buyaoxx/article/details/77619619 今天開發中在Centos7中安裝MySQL5.6版本後,在表中新建了一個weich

mac環境下支持PHP調試工具xdebug需要建項目server

qjm nic seq https nec updating bin mitm jcu brew install php56 --with-imap --with-tidy --with-debug --with-mysql --with-fpm do not us

使用Web Scraper 插件需要編程也能爬網

rap per list ima 總結 官方 clas 品牌 view 使用Web Scraper 插件,不需要編程,也能爬網,使用Web Scraper插件,能夠創建一個網站地圖,並能遍歷網站,抓取我們感興趣的數據,比如,我們登陸淘寶,京東等商務網站,我們可以通過 Web

已有的exe始終帶引數執行需要每次輸入命令列的方法(create sfx archive)

原始需求:由於讓其他人操作時,可能由於看錯或者是手動輸入錯誤,導致命令列引數並不是符合預期的值,結果不能得到想要的結果 工具:winrar 英文中文都可以(不能使用快壓,快壓沒有這個功能)--自行下載(我的資源裡也可以找到) 操作方法: 開啟rar, 選擇要進行自解壓格式的exe檔案,然

拒絕調包俠需要高階演算法和資料結構技巧

前言 大多數工科學生或者剛剛入門近年來比較火的“人工智慧”相關演算法的同學,在選擇語言的時候,都會選擇MATLAB、Python、R等等這些高階語言,對自己所學的演算法進行實現和除錯。這些高階語言中,包含了實現複雜演算法的基礎數學演算法、基本統計演算法、基礎資料結構的實現,比如均值(mean)、方差(std

react navigation 任意地方觸發導航需要 navigation 屬性

Navigating without the navigation prop https://reactnavigation.org/docs/en/navigating-without-navigation-prop.html Calling functions such as 

git快速拉取遠端程式碼需要麻煩的配置使用者名稱和密碼

使用HTTPS協議,有一種簡單粗暴的方式是在遠端地址中帶上密碼。 git remote set-url origin http://yourname:[email protected]/yourname/project.git

愛因斯坦:中國沒有產生科學是必然的需要感到任何的驚訝

       轉載地址:https://baijiahao.baidu.com/s?id=1608516580064929655&wfr=spider&for=pc          

2018/08/03 xml框架主要用來儲存資訊需要在網頁顯示資訊

XML用來儲存資訊,不需要顯示出來 XML(可擴充套件標記語言)(不需要編譯的語言) XML 好處:其實hml=xml+http4(跨平臺開發,既能寫移動端,也能寫pc) 1.支援跨平臺,各系統; 2.可以自由編寫標籤,可擴充套件性比較好 3.用於儲存資料html5(顯示資料)

angualrjs的下拉框同步問題需要請選擇

angualrjs的下拉框同步問題 使用ng-options: <tr ng-repeat="item in list"> <td id="settlementType{{item.channelId}}"> &l

關於IE8支援placeholder完美解決方案需要任何外掛

  最近有好多人諮詢我IE8不支援placeholder的問題,自己寫了一個demo以供參考。   js部分 1 function input_focus(e){ 2 $(e).css("color","#000000"); 3 if($(e).val()=="請輸入文字"){ 4

Jenkins shell 指令需要配置xcode外掛

echo 'start build JenkinsTest' pwd whoami export LANG=en_US.UTF-8 export LANGUAGE=en_US.UTF-8 ex

LINUX系統ORACLE11G 64位安裝檔案非官方下載需要登入ORACLE賬戶linux.x64_11gR2_database

從oracle官方下載還得註冊一個oracle的帳號,這個不需要,直接下載的檔案。 注意這是linux版本的,64位,oracle11g的。 解壓密碼:123456 網盤檔案,可能會有一個廣告頁面,請忽略,下載速度還是很快的哈。 --------PS-----------------