• 當前位置:首頁 > IT技術 > 編程語言 > 正文

    如何使用JavaMailSender給曾經心愛的她發送一封特別的郵件
    2022-08-29 23:51:44


    如何使用JavaMailSender給曾經心愛的她發送一封特別的郵件_spring

    發送郵件

    網站的服務端向用戶發郵件時,郵件中往往需要攜帶圖片,鏈接等內容。所以為了方便起見,我們一般發送HTML格式的郵件,那么怎么去拼一個HTML格式的郵件呢?——Thymeleaf。
    開始之前,先新建一個SpringBoot項目,并添加需要用到的依賴。然后就可以繼續往下了。

    1、郵箱設置

    1.1 啟用客戶端POP3/SMTP服務

    首先我們需要一個郵箱賬號,我這里選擇的是新浪郵箱,注冊并登錄,這里比較簡單,只需打開設置,找到客戶端,然后開啟POP3/SMTP服務即可。

    如何使用JavaMailSender給曾經心愛的她發送一封特別的郵件_Email_02

    2、Spring Email

    2.1 導入jar包

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

    2.2 郵箱參數設置

    導入包之后,我們還需要在程序當中給郵箱做一些參數的配置,我們要想在程序中用這個郵箱,那就需要把郵箱的賬號、密碼、訪問鏈接以及協議等等都需要配置好。如果之后想換郵箱,只需要改配置文件就好了,切記不要把郵箱在Java程序中寫死,下面就來配置一下參數。

    spring:
    # MailProperties 郵箱設置
    mail:
    host: smtp.sina.com # 聲明郵箱域名
    port: 465 # 郵箱端口
    username: xxxxxx@sina.com # 郵箱賬號
    password: be157646ac7d3754 # 郵箱授權碼
    protocol: smtps # 協議
    # 發送郵件時采用ssl安全連接
    properties:
    mail:
    smtp:
    ssl:
    enable: true

    2.3 使用 JavaMailSender 發送郵件

    接下來我們就可以寫代碼來發送郵件了,Spring Email 發送郵件的核心是JavaMailSender ,我們通過調用這個接口來發送郵件。我們這里寫一個工具類,然后把發送郵件的整個邏輯流程封裝起來,可以反復使用。

    @Component
    public class MailClient {

    // 聲明一個logger,用來記錄日志
    private static final Logger logger = LoggerFactory.getLogger(MailClient.class);

    @Autowired
    private JavaMailSender mailSender;

    // 發件人
    @Value("${spring.mail.username}")
    private String from;

    // to:收件人 subject:郵件標題 content:郵件內容
    public void sendMail(String to,String subject,String content) {
    try {
    MimeMessage message = mailSender.createMimeMessage();
    // 構建 MimeMessage 的內容
    MimeMessageHelper helper = new MimeMessageHelper(message);
    helper.setFrom(from);
    helper.setTo(to);
    helper.setSubject(subject);
    helper.setText(content, true); // true表示支持html文本
    mailSender.send(helper.getMimeMessage());
    } catch (MessagingException e) {
    logger.error("發送郵件失?。? + e.getMessage());
    }
    }
    }

    ??發送一份郵件需要發件人、收件人、郵件標題。郵件內容,而通過服務器發郵件,發件人是固定的,所以我們通過@Value將其注入進來。??

    2.4 簡單測試

    配置好之后我們就可以編寫一個測試類來測試一下是否能夠發送郵件吧

    @SpringBootTest
    public class MailTests {

    @Autowired
    private MailClient mailClient;

    @Test
    public void testTextMail() {
    mailClient.sendMail("1973707416@qq.com","測試郵件","Welcome!!!");
    }

    @Test
    public void testHtmlMail() {
    Context context = new Context();
    context.setVariable("username","Lucy");

    String content = templateEngine.process("/mail/demo", context);
    System.out.println(content);

    mailClient.sendMail("1973707416@qq.com","HTML測試",content);
    }


    }

    如何使用JavaMailSender給曾經心愛的她發送一封特別的郵件_html_03

    3、模板引擎

    3.1 使用 Thymeleaf 發送HTML郵件

    最后,我們來看一下如何使用Thymeleaf 模板引擎來發送HTML格式郵件,這樣就郵件可以包含更加豐富的內容了。

    • 首先,我們編寫一個簡單的郵件模板??demo.html??
    <!DOCTYPE html>
    <html lang="en" xmlns:th="http://www.thymeleaf.org">
    <head>
    <meta charset="UTF-8">
    <title>郵件示例</title>
    </head>
    <body>
    <p>親愛的, <span style="color:red;" th:text="${username}"></span>!</p>
    <p>最近怎么樣?我希望你的生活有點變化,至少是每當你歇班的時候不要一個人呆在宿舍里睡大覺,應該有一個帥哥哥陪著你逛商場,當你看到一件你想買又一直不舍得買的東西時,剛好他的兜里有足夠的錢,逛完商場陪你吃晚飯,然后為你買一大包零食再把你送回宿舍。這種待遇如果戀愛的時候不好好享受一下,結婚后恐怕就很難再找到感覺了。</p>
    <p>XX,一定要嫁給一個真心實意愛你的男人,嫁給一個品行好的男人,或許他會與你心中的白馬王子有一定的差距,但在今后的生活中,你會感覺到,他對你的感情是你無窮無盡的幸福寶藏,有這座寶藏在心中,你會比任何一個女人都幸福。</p>
    <p>...</p>
    <p>愛你的男孩</p>
    </body>
    </html>
    • 接著同樣寫一個測試方法
    @SpringBootTest
    public class MailTests {

    @Autowired
    private MailClient mailClient;

    @Autowired
    private TemplateEngine templateEngine;

    @Test
    public void testHtmlMail() {
    Context context = new Context();
    context.setVariable("username","XX");
    // 調用templateEngine的process方法生成動態網頁
    // 并且需要將模板文件的位置以及數據傳給他
    String content = templateEngine.process("/mail/demo", context);

    // 這里可以將生成的網頁打印在控制臺查看一下
    System.out.println(content);

    // 發送郵件
    mailClient.sendMail("1973707416@qq.com","寫給心愛女孩的一封信",content);
    }


    }

    控制臺輸出結果:

    如何使用JavaMailSender給曾經心愛的她發送一封特別的郵件_html_04

    郵件發送成功頁面

    如何使用JavaMailSender給曾經心愛的她發送一封特別的郵件_spring_05

    總的來說,發送郵件是一個比較簡單的技術。但她不是?。?!


    本文摘自 :https://blog.51cto.com/u

    開通會員,享受整站包年服務
    国产呦精品一区二区三区网站|久久www免费人咸|精品无码人妻一区二区|久99久热只有精品国产15|中文字幕亚洲无线码