基于JavaMail實(shí)現(xiàn)簡(jiǎn)單郵件發(fā)送
本文實(shí)例為大家分享了JavaMail實(shí)現(xiàn)簡(jiǎn)單郵件發(fā)送的具體代碼,供大家參考,具體內(nèi)容如下
1.引入依賴(lài)
<dependency> ? ? <groupId>org.springframework.boot</groupId> ? ? <artifactId>spring-boot-starter-mail</artifactId> ? ? <version>2.5.5</version> </dependency>
2.郵件發(fā)送工具類(lèi)
package com.test; import lombok.Builder; import lombok.Data; import javax.mail.Message; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import java.util.Date; import java.util.Properties; /** ?* 郵件工具 ?* @author visy.wang ?* @date 2021/10/18 11:13 ?*/ public class MailUtil { ? ? private static final String USER = "發(fā)件人郵箱地址"; ? ? private static final String PASS = "發(fā)件人郵箱密碼"; ? ? private static final String HOST = "smtp.xxx.com"; //郵件服務(wù)器地址 ? ? private static final String PORT = "465"; //SSL連接端口:465,普通連接:25 ? ? private static final Properties PROPERTIES = new Properties(); ? ? //連接郵件服務(wù)器的參數(shù)配置 ? ? static { ? ? ? ? //設(shè)置用戶(hù)的認(rèn)證方式 ? ? ? ? PROPERTIES.setProperty("mail.smtp.auth", "true"); ? ? ? ? //設(shè)置傳輸協(xié)議 ? ? ? ? PROPERTIES.setProperty("mail.transport.protocol", "smtp"); ? ? ? ? //設(shè)置發(fā)件人的SMTP服務(wù)器地址 ? ? ? ? PROPERTIES.setProperty("mail.smtp.host", HOST); ? ? ? ? //使用SSL安全連接(如果不使用SSL,以下配置可省略, 默認(rèn)端口是25) ? ? ? ? PROPERTIES.setProperty("mail.smtp.port", PORT); ? ? ? ? PROPERTIES.setProperty("mail.smtp.socketFactory.port", PORT); ? ? ? ? PROPERTIES.setProperty("mail.smtp.socketFactory.fallback", "false"); ? ? ? ? PROPERTIES.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); ? ? } ? ? @Data ? ? @Builder ? ? public static class MyMessage{ ? ? ? ? private String to; ? ? ? ? private String subject; ? ? ? ? private String content; ? ? } ? ? public static void send(MyMessage message) throws Exception{ ? ? ? ? //2、創(chuàng)建定義整個(gè)應(yīng)用程序所需的環(huán)境信息的 Session 對(duì)象 ? ? ? ? Session session = Session.getInstance(PROPERTIES); ? ? ? ? //設(shè)置調(diào)試信息在控制臺(tái)打印出來(lái) ? ? ? ? session.setDebug(true); ? ? ? ? //3、創(chuàng)建郵件的實(shí)例對(duì)象 ? ? ? ? Message msg = getMessage(session, message); ? ? ? ? //4、根據(jù)session對(duì)象獲取郵件傳輸對(duì)象Transport ? ? ? ? Transport transport = session.getTransport(); ? ? ? ? //設(shè)置發(fā)件人的賬戶(hù)名和密碼 ? ? ? ? transport.connect(USER, PASS); ? ? ? ? //發(fā)送郵件,并發(fā)送到所有收件人地址,message.getAllRecipients() 獲取到的是在創(chuàng)建郵件對(duì)象時(shí)添加的所有收件人, 抄送人, 密送人 ? ? ? ? transport.sendMessage(msg, msg.getAllRecipients()); ? ? ? ? //如果只想發(fā)送給指定的人,可以如下寫(xiě)法 ? ? ? ? //transport.sendMessage(msg, new Address[]{new InternetAddress("xxx@qq.com")}); ? ? ? ? //5、關(guān)閉郵件連接 ? ? ? ? transport.close(); ? ? } ? ? private static MimeMessage getMessage(Session session, MyMessage message) throws Exception{ ? ? ? ? //創(chuàng)建一封郵件的實(shí)例對(duì)象 ? ? ? ? MimeMessage msg = new MimeMessage(session); ? ? ? ? //設(shè)置發(fā)件人地址 ? ? ? ? msg.setFrom(new InternetAddress(USER)); ? ? ? ? /** ? ? ? ? ?* 設(shè)置收件人地址(可以增加多個(gè)收件人、抄送、密送),即下面這一行代碼書(shū)寫(xiě)多行 ? ? ? ? ?* MimeMessage.RecipientType.TO:發(fā)送 ? ? ? ? ?* MimeMessage.RecipientType.CC:抄送 ? ? ? ? ?* MimeMessage.RecipientType.BCC:密送 ? ? ? ? ?*/ ? ? ? ? msg.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(message.getTo())); ? ? ? ? //設(shè)置郵件主題 ? ? ? ? msg.setSubject(message.getSubject(),"UTF-8"); ? ? ? ? //設(shè)置郵件正文 ? ? ? ? msg.setContent(message.getContent(), "text/html;charset=UTF-8"); ? ? ? ? //設(shè)置郵件的發(fā)送時(shí)間,默認(rèn)立即發(fā)送 ? ? ? ? msg.setSentDate(new Date()); ? ? ? ? return msg; ? ? } }
3.發(fā)送測(cè)試
public static void main(String[] args) throws Exception{ ? ? MailUtil.send( ? ? ? ? ? MailUtil.MyMessage.builder() ? ? ? ? ? .to("收件人郵箱地址") ? ? ? ? ? .subject("郵件主題") ? ? ? ? ? .content("郵件內(nèi)容<b>支持HTML標(biāo)簽</b>") ? ? ? ? ? .build() ? ? ); }
4.注意點(diǎn)
要使用某個(gè)郵件服務(wù)器發(fā)送郵件,需要先在郵箱中開(kāi)通對(duì)用的服務(wù):即開(kāi)啟 SMTP服務(wù)。
本文并不是springboot的使用方式,springboot的方式更簡(jiǎn)單,只需在application.yml中配置好,然后注入一個(gè)發(fā)送者即可。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- JavaMail實(shí)現(xiàn)郵件發(fā)送機(jī)制
- JavaMail整合Spring實(shí)現(xiàn)郵件發(fā)送功能
- JavaMail實(shí)現(xiàn)簡(jiǎn)單郵件發(fā)送
- 基于JavaMail的Java郵件發(fā)送
- JavaMail郵件發(fā)送機(jī)制詳解
- 基于JavaMail實(shí)現(xiàn)郵件發(fā)送
- 基于JavaMail的Java實(shí)現(xiàn)復(fù)雜郵件發(fā)送功能
- 基于JavaMail的Java實(shí)現(xiàn)簡(jiǎn)單郵件發(fā)送功能
- JavaMail實(shí)現(xiàn)郵件發(fā)送的方法
- JavaMail實(shí)現(xiàn)帶附件的郵件發(fā)送
相關(guān)文章
Java異常處理UncaughtExceptionHandler使用實(shí)例代碼詳解
當(dāng)一個(gè)線(xiàn)程由于未捕獲異常即將終止時(shí),Java虛擬機(jī)將使用thread . getuncaughtexceptionhandler()查詢(xún)線(xiàn)程的uncaughtException處理程序,并調(diào)用處理程序的uncaughtException方法,將線(xiàn)程和異常作為參數(shù)傳遞2023-03-03Java多線(xiàn)程模擬售票程序和線(xiàn)程安全問(wèn)題
本篇文章給大家分享了Java多線(xiàn)程模擬售票程序和線(xiàn)程安全問(wèn)題的相關(guān)知識(shí)點(diǎn),對(duì)此有興趣的朋友可以參考學(xué)習(xí)下。2018-05-05JDK動(dòng)態(tài)代理提高代碼可維護(hù)性和復(fù)用性利器
這篇文章主要為大家介紹了JDK動(dòng)態(tài)代理提高代碼可維護(hù)性和復(fù)用性利器,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10@JsonFormat處理LocalDateTime失效的問(wèn)題
這篇文章主要介紹了關(guān)于@JsonFormat處理LocalDateTime失效的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08SpringBoot整合Swagger3生成接口文檔過(guò)程解析
這篇文章主要介紹了SpringBoot整合Swagger3生成接口文檔過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07