1. 程式人生 > >SpringBoot實現簡單的郵件傳送(收件人可選擇,郵件內容可編輯)

SpringBoot實現簡單的郵件傳送(收件人可選擇,郵件內容可編輯)

1.配置專案檔案目錄,我配置的是這樣的:

2:配置pom.xml

參照對比新增包依賴

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

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

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



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

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>


        <dependency>
            <groupId>com.vaadin.external.google</groupId>
            <artifactId>android-json</artifactId>
            <version>RELEASE</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>RELEASE</version>
            <scope>compile</scope>
        </dependency>


3:配置application.properties檔案

獲取郵箱授權碼的方式可以自行百度。

#郵箱伺服器地址
spring.mail.host=smtp.qq.com
#發件人地址
[email protected]
#郵箱的授權碼
spring.mail.password=xxxxx
spring.mail.default-encoding=utf-8
#發件人
[email protected]

4. 配置MailService和MailServiceImpl檔案

MailService檔案

package com.email.service;

public interface MailService {
    //傳送普通郵件
    void sendSimpleMail(String to,String subject,String content);
    //傳送Html郵件
    void sendHtmlMail(String to,String subject,String content);
    //傳送帶附件的郵件
    void sendAttachmentMail(String to,String subject,String content,String filePath);
}

 MailServiceImpl檔案

package com.email.service.impl;

import com.email.service.MailService;
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 org.springframework.stereotype.Service;

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


@Service
@Component
public class MailServiceImpl implements MailService {

    @Autowired
    private JavaMailSender mailSender;

    @Value("${mail.fromMail.addr}")
    private String from;

    @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);
            System.out.println("success");
        }catch (Exception e){
            System.out.println("fail"+e);
        }
    }

    @Override
    public void sendHtmlMail(String to, String subject, String content) {
        MimeMessage message = mailSender.createMimeMessage();
        try {
            MimeMessageHelper helper = new MimeMessageHelper(message, true);   //true表示需要建立一個multipart message
            helper.setFrom(from);
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(content, true);
            mailSender.send(message);
            System.out.println("html郵件傳送成功");
        } catch (MessagingException e) {
            System.out.println("傳送html郵件時發生異常!"+e);
        }
    }

    @Override
    public void sendAttachmentMail(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);
            //helper.addAttachment("test"+fileName, file);

            mailSender.send(message);
            System.out.println("帶附件的郵件已經發送。");
        } catch (MessagingException e) {
            System.out.println("傳送帶附件的郵件時發生異常!"+e);
        }
    }
}

 5:MailController檔案

package com.email.controller;


import org.testng.annotations.Test;
import com.email.service.MailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.thymeleaf.TemplateEngine;

import org.thymeleaf.context.Context;

@RestController
@RequestMapping("/mail")
public class MailController {

    @Autowired
    private MailService mailService;

    @Autowired
    private TemplateEngine templateEngine;


    @RequestMapping("/sendSimpleMail")
    public String sendSimpleMail() {
        String to = "[email protected]";
        String subject = "test html mail";
        String content = "hello, this is html mail!";
        mailService.sendSimpleMail(to, subject, content);
        return "success";
    }

    @RequestMapping("/sendHtmlMail")
    public String  sendHtmlMail() {
        String to = "[email protected]";
        String subject = "test html mail";
        String content = "hello, this is html mail";
        mailService.sendHtmlMail(to, subject, content);
        return "success";
    }


    @Test
    @RequestMapping("/sendAttachmentsMail")
    public String sendAttachmentsMail() {
        String filePath="E:\\11111.txt";
        mailService.sendAttachmentMail("[email protected]", "主題:帶附件的郵件", "有附件,請查收!", filePath);
        return "success";
    }

    @Test
    @RequestMapping("/sendTemplateMail")
    public String sendTemplateMail() {
        //建立郵件正文
        Context context = new Context();
        context.setVariable("user", "1111");
        context.setVariable("web", "tttt");
        context.setVariable("company", "我是一個公司");
        context.setVariable("product","我是一個產品");
        String emailContent = templateEngine.process("emailTemplate", context);
        mailService.sendHtmlMail("[email protected]","主題:這是模板郵件",emailContent);
        return "success";
    }

}

6:emailTemplate.html檔案

<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p th:text="'尊敬的 ' + ${user} + '使用者:'"></p>

<p th:text=" '恭喜您註冊成為'+${web}+'網的使用者,同時感謝您對'+${company}+'的關注與支援並歡迎您使用'+${product}+'的產品與服務。'"></p>

</body>
</html>

 7:比較重要的EmailApplication啟動檔案

package com.email;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
@ComponentScan(basePackages = "com.email.*")
public class EmailApplication {

    public static void main(String[] args) {
        SpringApplication.run(EmailApplication.class, args);
        System.out.println("Success");
    }
}

8:執行EmailApplication右擊run。在瀏覽器輸入http://localhost:8080/mail/+對應的方法名即可傳送成功。例如:


即可成功。

======================分割線============================

擴充套件:修改專案為郵件內容可編輯,收件人可自我選擇

1.新建email類

package com.email.email;

public class Email {
    private String to;
    private String object;
    private String content;

    public String getTo() {
        return to;
    }

    public void setTo(String to) {
        this.to = to;
    }

    public String getObject() {
        return object;
    }

    public void setObject(String object) {
        this.object = object;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    @Override
    public String toString() {
        return "Email{" +
                "to='" + to + '\'' +
                ", object='" + object + '\'' +
                ", content='" + content + '\'' +
                '}';
    }
}

 2.新建一個方法

@ResponseBody
    @RequestMapping("/sendSimpleMail")
    public String sendSimpleMail(@RequestBody Email email) {
        mailService.sendSimpleMail(email.getTo(),email.getObject(),email.getContent());
        return "success";
    }

3.在templates檔案中新建html檔案 

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8"/>
    <title>第一個HTML頁面</title>
    <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
</head>
<body>

<h1>Hello Spring Boot!!!</h1>


<p th:text="${hello}"></p>

收件人:<input type="text" id="shou">
<br>
標題:<input type="text" id="title">
<br>
內容:<input type="text" id="content">
<br>
附件:<input type="file" id="file">
<br>
<button id="b1">傳送</button>
</body>
<script>
    $(document).ready(function(){
        $("#b1").click(function(){
            $.ajax({
                type:"post",
                url:"/mail/sendSimpleMail",
                dataType : "json",
                data:JSON.stringify({
                    to :$("#shou").val(),
                    object : $("#title").val(),
                    content : $("#content").val()
                }),
                contentType: "application/json",
                success : function () {
                    $("input[name='test']").val("").focus();
                }
            })

        });
    });
</script>
</html>

 4.注:要在application.properties裡配置新的內容。如下:

spring:
thymeleaf:
prefix: classpath:/templates/

 5:注:在html頁面中使用ajax時,data資料要JSON.Stringify(),不然會報錯,如下:

6:附件部分獲取不到檔案地址,如有大佬,看到請指教怎麼獲取到file的地址。感謝!!! 

相關推薦

SpringBoot實現簡單郵件傳送收件人選擇郵件內容編輯

1.配置專案檔案目錄,我配置的是這樣的: 2:配置pom.xml 參照對比新增包依賴 <dependency> <groupId>org.springframework.boot</groupId>

phpmailer實現簡單郵件傳送以網易郵箱smtp伺服器為例

1、描述 第一次做到用php做到傳送郵件的功能。 Google了一下,php內建函式裡面有一個mail()函式。但是使用mail的話,會涉及到很多問題,我也沒有仔細研究過,反正都是和smtp協議息息相關。 於是,就去GitHub上開源的檔案傳送封裝好的專案

C++連線CTP介面實現簡單量化交易行情、交易、k線、策略

對於量化交易來說,量化策略和技術系統缺一不可,為了知其所以然,本文實現了一個C++連線CTP介面進行模擬交易的demo,從接收行情、下訂單、資料處理到新增策略、掛載執行交易等多個環節來看一下量化交易的最簡單流程,管中窺豹,一探究竟。 準備工作 交易所介面 這裡使用上

POI解析自定義日期格式標題雖然大眾但是內容絕非大眾

在專案中遇到過一種情況,匯入的時間格式為 yyyy/mm/dd hh:mm:ss,這個很好弄,自定義一下日期格式,並且新增資料有效性。。。。趕著下班,暫時不廢話那麼多了。就是兩種情況:一個是解析自定義日期,還有解釋從別的地方複製過來的日期,雖然也能新增上去,但是後天解析時間資料不對。直接上程式碼,希望有所幫助

Java實現郵件傳送簡單

Java實現郵件傳送,需要指定郵件伺服器,和自己的郵箱賬號和密碼,謹記 自己的郵箱必須得到到客戶端授權碼,尤其是新開的郵箱,具體看程式碼,包括附件傳送 public class EmailUtils { private static String from = ""; //郵箱賬號 p

SpringBoot實現簡單傳送郵件

瞭解郵件傳送與接收過程 如下: A—–1>—-2>—-3>—–B 包括三大步驟: 1) 計算機A通過SMTP協議把郵件傳送到伺服器S1。 2)

SpringCloudspringboot實現簡單服務呼叫

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

SpringBoot整合Mybatis實現簡單的CRUD2

思考 看了上面一步步的講解。你應該明白了,其實和SSM階段的CRUD基本相同,這裡我就不再舉例其他方法。 下面我們講解一下不同的地方: 實現頁面跳轉 因為Thymeleaf指定的目錄src/main/resources/templates/是受保護的目錄,其下的資源不能直接通過瀏

Springboot實現簡單傳送郵箱

首先建立一個郵箱,建議@126.com   @163.com   @qq.com都可以 開啟smtp,一下是使用圖解: 在pom.xml中引入依賴: <dependency> <groupId>org.

超方便、最簡單版本:java 郵件傳送 半分鐘寫完程式碼

1. jar 和 郵箱設定 <!--郵件--> <dependency> <groupId>org.simplejavamail</groupId>

springboot+kafka+郵件傳送最佳實踐

導讀 整合spring-kafka,生產者生產郵件message,消費者負責傳送 引入執行緒池,多執行緒傳送訊息 多郵件伺服器配置 定時任務生產訊息;計劃郵件傳送 實現過程 匯入依賴 <pro

使用Struts2和jQuery EasyUI實現簡單CRUD系統——jsp,json,EasyUI的結合

元素 word cli resultset sheet 傳輸 charset {} tco 這部分比較復雜,之前看過自己的同學開發一個選課系統的時候用到了JSON,可是一直不知道有什麽用。寫東西也沒用到。所以沒去學他。然後如今以這樣的懷著好奇心,這是做什麽用的,這是怎麽用

【SSH進階之路】Struts基本原理 + 實現簡單登錄

target doctype 掌握 pack insert enter snippet file manage 上面博文,主要簡單的介紹了一下SSH的基本概念,比較宏觀。作為剛開始學習的人可以有一個總體上的認識,個人覺得對學習有非常好的輔助功能,它不不過

使用gluon實現簡單的CNN

bsp evaluate label exce ini rate ati sof name from mxnet import ndarray as nd from mxnet import gluon from mxnet import autograd from mx

pytorch:實現簡單的GANMNIST資料集

# -*- coding: utf-8 -*- """ Created on Sat Oct 13 10:22:45 2018 @author: www """ import torch from torch import nn from torch.autograd import Vari

用C語言實現簡單 三子棋井字棋小遊戲

函式頭 放在標頭檔案裡 #ifndef __GAME_H__ #define __GAME_H__ #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #inc

spring boot 郵件傳送帶附件

首先開啟QQ郵箱的POP.SMTP伺服器,獲取授權碼。 設定-->賬戶-->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務   pom.xml需要載入三個jar,可以在這個網站裡下載:https://mvnrepository.com/

利用tensorflow實現簡單的卷積神經網路-對程式碼中相關函式介紹——遷移學習小記

  上篇文章對cnn進行了一些介紹,附了完整小例子程式碼,介紹了一部分函式概念,但是對我這樣的新手來說,程式碼中涉及的部分函式還是無法一下子全部理解。於是在本文中將對程式碼中使用的函式繼續進行一一介紹。 具體程式碼見上一篇(二) 一、 #定義輸入的placehoder,x是特徵

js實現簡單小例項奔跑的小豬

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>window物件</title> <style>

利用tkinter實現簡單計算器功能不使用eval函式

利用tkinter實現簡單計算器功能(不使用eval函式) 一、思路 tkinter: 佈置主介面; 上部為數字顯示介面; 下部為數字鍵與功能鍵介面; 邏輯: 程式只考慮兩個運算元進行計算的情況,不考慮複雜情況 展示: