1. 程式人生 > >springboot利用JavaMailSender傳送郵件

springboot利用JavaMailSender傳送郵件

之前用javamaill的方式傳送郵件,比較繁瑣,現在利用spring-mail來發送郵件,非常簡單

1.引入pom依賴,分別是freemarker郵件模板和spring-maill依賴

<!-- Spring Boot Freemarker 依賴,傳送HTML格式的郵件的方式 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>
<!-- spring-boot-mail 傳送郵箱 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
           </dependency>

2.加入配置在application.properties

#模板載入路徑
spring.freemarker.template-loader-path=classpath:/static/template/
#模板檔案字尾
spring.freemarker.suffix=.flt
spring.freemarker.enabled=true
spring.freemarker.cache=false
spring.freemarker.charset=UTF-8
spring.freemarker.content-type=text/html
spring.freemarker.allow-request-override=false
#是否需要檢查模板路徑是否存在
spring.freemarker.check-template-location=true
spring.freemarker.expose-request-attributes=false
spring.freemarker.expose-session-attributes=false
spring.freemarker.expose-spring-macro-helpers=false
#支援qq郵箱 163郵箱等
spring.mail.host=smtp.qq.com
spring.mail.protocol=smtp
#傳送者郵箱需要和實際傳送者一致,否則報錯501

[email protected]
#傳送者郵箱的授權碼,不是密碼,自己去qq郵箱設定
spring.mail.password=MM
spring.mail.properties.mail.smtp.auth=true  
spring.mail.properties.mail.smtp.starttls.enable=true  
spring.mail.properties.mail.smtp.starttls.required=true
3.傳送郵件介面

public interface SendEmailService {
 
    /**
     * 傳送簡單郵件
     * @throws Exception
     */
    public void sendSimpleMail() throws Exception;
    
    /**
     * 傳送HTML郵件--程式碼重複樣式難看棄用
     * @throws Exception
     */
    public void sendHtmlSimpleMail() throws Exception;
    
    /**
     * 傳送模板檔案
     * @throws Exception
     */
    public void sendFreemarker() throws Exception;
}
4.傳送郵件實現部分

@Service
public class SendEmailServiceImpl implements SendEmailService {
 
    private static final Logger LOGGER = LoggerFactory.getLogger(SendEmailServiceImpl.class);
    
    @Autowired
    private JavaMailSender mailSender;
    
    @Autowired
    private Configuration configuration;
    
    public void sendSimpleMail() throws Exception {
        LOGGER.info("準備傳送簡單郵件");
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom("[email protected]");
        message.setTo("[email protected]");
        message.setSubject("主題:簡單郵件");
        message.setText("測試郵件內容");
        mailSender.send(message);
    }
 
    @Override
    public void sendHtmlSimpleMail() throws Exception {
        LOGGER.info("準備傳送HTML郵件");
        MimeMessage message = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message, true);
        helper.setFrom("[email protected]");
        helper.setTo("[email protected]");
        helper.setSubject("HTML主題");
        helper.setText("<html><body><img src=\"cid:springcloud\" >"
                + "</br>"
                +"祝我們520快樂!"
                + "</body></html>,true);
        // 傳送圖片
        File file = ResourceUtils.getFile("classpath:static/image/WechatIMG1.jpeg");
        helper.addInline("springcloud", file);
        // 傳送附件
        file = ResourceUtils.getFile("classpath:static/file/a.txt");
        helper.addAttachment("附件名稱", file);
        mailSender.send(message);
        
    }
    
    public void sendFreemarker() throws Exception {
        MimeMessage message = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message, true);
        helper.setFrom("[email protected]");
        helper.setTo("[email protected]");
        helper.setSubject("FREEMARKER主題郵件");
        Map<String, Object> model = new HashMap<String, Object>();
        model.put("content", "這是郵件內容");
        model.put("path", "");
        Template template = configuration.getTemplate("welcome.flt");
        String text = FreeMarkerTemplateUtils.processTemplateIntoString(template, model);
        helper.setText(text, true);
        mailSender.send(message);
    }
}
5指定的模板路徑下的模板檔案在src/main.resource/ 下的static/template下的 檔名.ftl

需要注意這裡和上面的model的賦值保持一致,否則會有空指標

<td colspan="2" style="font-size: 18px; line-height: 1.6;padding-top: 30px">
                            <div style="text-indent: 36px; padding-right: 24px">
                                 ${content}
                            </div>
                        </td>
6.傳送郵件測試類

@Test
    public void testEmail() throws Exception {
        //sendEmailService.sendSimpleMail();
        //sendEmailService.sendHtmlSimpleMail();
        sendEmailService.sendFreemarker();
    }
ok,郵件到達指定郵箱啦!

程式碼中寫死了郵箱傳送者和接受者,這些可配置的,還可以傳送多人的,還剩下用mq非同步處理多人傳送。

嗯嗯,你看到這裡也知道qq號了啊,歡迎加qq交流學習,請備註:CSDN部落格
--------------------- 
原文:https://blog.csdn.net/zhangxiaomin1992/article/details/80420374 

相關推薦

springboot利用JavaMailSender傳送郵件

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

13.SpringbootJavaMailSender傳送電子郵件

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

SpringbootJavaMailSender傳送電子郵件

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

使用spring的JavaMailSender傳送郵件

步驟:     一:pom.xml       <!-- java郵件 -->       <dependency>         &nb

Spring JavaMailSender傳送郵件

個人選擇的傳送服務伺服器是QQ,所以要進行開啟QQ郵箱的SMTP服務,過程如圖所示: 在賬戶下設定開啟SMTP服務,需記住顯示的STMP密碼,點選“開啟”後發簡訊過去即可開啟 EmailSendTest: import org.junit.Test; im

SpringBoot整合JavaMail傳送郵件 --轉載

JavaMail是SUN提供給廣大Java開發人員的一款郵件傳送和接受的一款開源類庫,支援常用的郵件協議,如:SMTP、POP3、IMAP,開發人員使用JavaMail編寫郵件程式時,不再需要考慮底層的通訊細節如:Socket而是關注在邏輯層面。JavaMail可以傳送各種複雜MIME格式的郵件內容

Spring Boot使用JavaMailSender傳送郵件

http://www.cnblogs.com/wxc-xiaohuang/p/9532631.html https://blog.csdn.net/icannotdebug/article/details/79725297 https://docs.spring.io/spring/docs/4.3.21

利用JavaMail傳送郵件:smtp.163.com

一、利用JavaMail傳送郵件案例: 1、maven專案結構: 2、先在pom.xml裡邊加入Javamail依賴,系統會根據座標自動下載mail包(前提是配置好了maven): 3、配置email.properties屬性檔案,主要是為了不更改程式碼的前提下,該改變傳送郵件的一些基本資訊:

利用python傳送郵件

1. 點選設定,選擇POP3/SMTP/IMAP。 2. 第一次進入,這兩項應該是未勾選的。  3. 點選左側客戶端授權密碼,再點選重置授權碼。輸入簡訊驗證碼後,會提示設定授權密碼(不要和郵箱登陸密碼重複)。 4. 記住自己設定的授權密碼之後,開始用pyth

利用JavaMail傳送郵件示例

    最近閒來無事,為了鞏固一下知識點,寫了一個利用JavaMail傳送郵件的例子。只寫了一個傳送的例子,以後有時間再寫下接收的例子。 1、簡單介紹一下JavaMail的傳送步驟 根據郵件會話屬性和密碼驗證器構造一個傳送郵件的session會話 通過session會話

python 利用 smtplib 傳送郵件方法

說明 python 自帶了 smtplib 庫 可以直接呼叫並進行郵件傳送 預設狀態下, python 利用 base64 進行使用者名稱密碼傳遞 測試期間, 可以開啟 debug 功能, 方便進行排錯 測試程式碼 impor

(Python)利用SMTP傳送郵件進階篇,傳送混合格式郵件

html很簡單,只要MIMEText中的引數改成html即可 附件也不難,難的是加圖片 雖然圖片可以當做附件傳送,但是顯然還需要一個加入正文的功能,方法是用html的img標籤把圖片加入。但是這樣會有個問題,一般的郵箱都會將這種連結遮蔽掉。這個問題有2種解決方法,第一種是

spring JavaMailSender 傳送郵件

配置JavaMailSenderImpl類 ** * @Configuration 表示是配置類 * @ComponentScan("com") 需要掃描的包路徑 * @PropertySource("classpath:mail.properties") 需要載入的

php利用smtp傳送郵件

PHP : 5.6.8 email工具類下載地址:      http://files.cnblogs.com/files/rhythmK/email.class.zip 傳送郵件程式碼如下: require_once("email.class.php"); $sm

Springboot 整合 javamail傳送郵件535錯誤

好多夥伴都會遇到 javamail傳送郵件535錯誤  網上有很多經常能搜到的解決方案我姐不說了,提一下我的問題,以及很少能搜到的導致535錯誤的一種原因。  當你的jdk是1.8版本的時候,也是導致535的一種因素:解決:如果還有問題 大家就可以去網上搜搜了,其他的導致53

centos7 利用mailx傳送郵件

當需要伺服器定時傳送郵件到自己郵箱時,一個郵件服務就很重要了,以下主要是mailx的實現,主要是利用 1.安裝mailx yum install mailx -y 2.使用到的配置檔案只有一個,是/etc/mail.rc,通過修改配置檔案/etc/mail.rc可以使用外部SMTP伺服器,輕鬆實現l

(Python)利用SMTP傳送郵件終極篇,主送、抄送、暗送

在利用SMTP傳送郵件進階篇,傳送混合格式郵件一文中我解釋瞭如何傳送各種內容的郵件,但是收件人都是主送,沒有抄送和暗送。 文中相關程式碼如下: msg['from'] = user msg['to'] = ','.join(to_list) #注意,不是分號 msg[

nodejs利用nodemailer傳送郵件,163 和gmail的配置

安裝nodemailer: npm install nodemailer --save 我所使用的版本號是:0.7.1 1. 不配置任何的郵箱伺服器,同樣可以進行郵件的傳送 const nodeMailer = require("nodemailer"); le

Spring Boot中使用JavaMailSender傳送郵件

相信使用過Spring的眾多開發者都知道Spring提供了非常好用的JavaMailSender介面實現郵件傳送。在Spring Boot的Starter模組中也為此提供了自動化配置。下面通過例項看看如何在Spring Boot中使用JavaMailSender傳送郵件。 快速入門 在Spring

利用python 傳送郵件

#coding=utf-8 import traceback import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from e