JavaMail實(shí)現(xiàn)發(fā)送郵件(QQ郵箱)
本文實(shí)例為大家分享了JavaMail實(shí)現(xiàn)發(fā)送郵件的具體代碼,供大家參考,具體內(nèi)容如下
用的qq郵箱,需要去郵箱設(shè)置那邊開一下stmp服務(wù)啥的獲得下面要用到的密碼,具體開服務(wù)自己百度,這邊不截圖了。
代碼如下:導(dǎo)包和工具類,可用!
一、導(dǎo)這個(gè)包
<dependency> ? ? <groupId>javax.mail</groupId> ? ? ?<artifactId>mail</artifactId> ? ? <version>1.5.0-b01</version> </dependency>
二、工具類封裝成對(duì)象
import lombok.Data;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class MailHelper
{
? ? /**
? ? ?* 郵件服務(wù)器主機(jī)名。
? ? ?*/
? ? private static String HOST_NAME;
? ? private String sendMailUrl ;
? ? private String receiveMailUrl;
? ? /**
? ? ?* IMAP/SMTP服務(wù)的密碼 去qq郵箱開的。 幾個(gè)月前的失效了還是蠻奇怪的 2021年8月5日21:33:36
? ? ?*/
? ? private String servicePassword;
? ? static {
? ? ? ? //默認(rèn)直接qq的吧
? ? ? ? HOST_NAME = "smtp.qq.com";
? ? }
? ? public MailHelper(String sendMailUrl,String receiveMailUrl,String servicePassword){
? ? ? ? this.sendMailUrl=sendMailUrl;
? ? ? ? this.receiveMailUrl=receiveMailUrl;
? ? ? ? this.servicePassword=servicePassword;
? ? }
? ? public ?void sendSimpleMail(Mail mail) throws Exception {
? ? ? ? Properties prop = new Properties();
? ? ? ? ?設(shè)置郵件服務(wù)器主機(jī)名
? ? ? ? prop.setProperty("mail.host", "smtp.qq.com");
? ? ? ? // 發(fā)送郵件協(xié)議名稱
? ? ? ? prop.setProperty("mail.transport.protocol", "smtp");
? ? ? ? prop.setProperty("mail.smtp.auth", "true");
? ? ? ? // 使用JavaMail發(fā)送郵件的5個(gè)步驟
? ? ? ? // 1、創(chuàng)建session 根據(jù)配置創(chuàng)建會(huì)話對(duì)象, 用于和郵件服務(wù)器交互
? ? ? ? Session session = Session.getInstance(prop);
? ? ? ? // 開啟Session的debug模式,這樣就可以查看到程序發(fā)送Email的運(yùn)行狀態(tài)
? ? ? ? session.setDebug(true);
? ? ? ? // 2、通過(guò)session得到transport對(duì)象
? ? ? ? Transport ts = session.getTransport();
? ? ? ? // 3、使用郵箱的用戶名和密碼連上郵件服務(wù)器,發(fā)送郵件時(shí),發(fā)件人需要提交郵箱的用戶名和密碼給smtp服務(wù)器,用戶名和密碼都通過(guò)驗(yàn)證之后才能夠正常發(fā)送郵件給收件人。
? ? ? ? // 注:這邊host必須填寫smtp.qq.com
? ? ? ? // 而不是你qq郵箱賬號(hào)如1741049@qq.com,否則報(bào)錯(cuò)host名unkonwn。
? ? ? ? // Host:郵件服務(wù)器主機(jī)名
? ? ? ? ts.connect(HOST_NAME, receiveMailUrl, servicePassword);
? ? ? ? // 4、創(chuàng)建郵件
? ? ? ? Message message = createSimpleMail(session, mail.getTitle(), mail.getContent());
? ? ? ? // 5、發(fā)送郵件
? ? ? ? ts.sendMessage(message, message.getAllRecipients());
? ? ? ? ts.close();
? ? }
? ??
? ? private MimeMessage createSimpleMail(Session session, String title, String content) throws Exception {
? ? ? ? // 創(chuàng)建郵件對(duì)象
? ? ? ? MimeMessage message = new MimeMessage(session);
? ? ? ? // 指明郵件的發(fā)件人
? ? ? ? message.setFrom(new InternetAddress(receiveMailUrl));
? ? ? ? // 指明郵件的收件人,現(xiàn)在發(fā)件人和收件人是一樣的,那就是自己給自己發(fā)
? ? ? ? message.setRecipient(Message.RecipientType.TO, new InternetAddress(receiveMailUrl));
? ? ? ? // 郵件的標(biāo)題
? ? ? ? message.setSubject(title);
? ? ? ? // 郵件的文本內(nèi)容
? ? ? ? message.setContent(content, "text/html;charset=UTF-8");
? ? ? ? // 返回創(chuàng)建好的郵件對(duì)象
? ? ? ? return message;
? ? }
? ? @Data
? ? public static class Mail{
? ? ? ? private String title;
? ? ? ? /**
? ? ? ? ?* 正文
? ? ? ? ?*/
? ? ? ? private String content;
? ? ? ? public Mail(){
? ? ? ? }
? ? ? ? public Mail(String title,String content){
? ? ? ? ? ? this.title=title;
? ? ? ? ? ? this.content=content;
? ? ? ? }
? ? }
}測(cè)試類:
package com.forever.junittest;
import com.forever.gitfund.util.MailHelper;
import com.forever.gitfund.util.MailHelper.Mail;
import org.junit.Test;
public class TestMailHelper {
? ? @Test
? ? public void test() throws Exception {
? ? ? ? String qq = "xx@qq.com";
? ? ? ? String send = qq;
? ? ? ? MailHelper mailHelper = new MailHelper(qq,send,"xxxxx");
? ? ? ? Mail mail = new Mail();
? ? ? ? String title = "我的第一封郵件";
? ? ? ? String content = "這是我的第一封郵件 from idea";
? ? ? ? mail.setTitle(title);
? ? ? ? mail.setContent(content);
? ? ? ? mailHelper.sendSimpleMail(mail);
? ? }
}以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
springboot中如何使用openfeign進(jìn)行接口調(diào)用
這篇文章主要介紹了springboot中如何使用openfeign進(jìn)行接口調(diào)用問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07
Java org.w3c.dom.Document 類方法引用報(bào)錯(cuò)
這篇文章主要介紹了Java org.w3c.dom.Document 類方法引用報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
Jmeter實(shí)現(xiàn)Base64編碼的兩種方式
這篇文章主要介紹了Jmeter實(shí)現(xiàn)Base64編碼,大家都知道Jmeter實(shí)現(xiàn)Base64編碼有兩種方式,本文通過(guò)圖文并茂的形式把每種方法給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-01-01
Java實(shí)現(xiàn)圖片上文字內(nèi)容的動(dòng)態(tài)修改的操作步驟
在數(shù)字圖像處理領(lǐng)域,Java提供了強(qiáng)大的庫(kù)來(lái)處理圖片,包括讀取、修改和寫入圖片,如果你需要在Java應(yīng)用程序中修改圖片上的文字內(nèi)容,可以通過(guò)圖像處理技術(shù)來(lái)實(shí)現(xiàn),這篇博文將介紹如何使用Java實(shí)現(xiàn)圖片上文字內(nèi)容的動(dòng)態(tài)修改,需要的朋友可以參考下2024-07-07
Spring boot自定義http反饋狀態(tài)碼詳解
這篇文章主要給大家介紹了Spring boot自定義http反饋狀態(tài)碼的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。2017-06-06
詳解SpringSecurity處理會(huì)話管理和注銷功能
本文介紹了詳解SpringSecurity處理會(huì)話管理和注銷功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01

