Java實(shí)現(xiàn)郵箱發(fā)送功能實(shí)例(阿里云郵箱推送)
前言
綁定阿里云域名,創(chuàng)建域名賬戶,并配置解析域名賬戶,獲得發(fā)送郵箱的權(quán)限,上限兩百封,超出要¥…
阿里云郵件推送控制臺(tái)
https://www.aliyun.com/product/directmail
申請(qǐng)郵箱并解析域名
https://yq.aliyun.com/articles/707997
1. 郵箱信息實(shí)體類
package cn.bitqian.mail.test; /** * 郵件內(nèi)容實(shí)體類 * @author echo lovely * @date 2020/9/18 15:47 */ public class MailInfo { // 發(fā)件人賬戶 private String sendEmailAccount; // 發(fā)件人密碼 private String sendEmailPassword; // 收件人賬戶 private String receiveMailAccount; // 發(fā)送人姓名 private String sendPersonName; // 收件人姓名 private String receivePersonName; // 郵件標(biāo)題 private String mailTitle; // 郵件正文 private String mailContent; public MailInfo(String sendEmailAccount, String sendEmailPassword, String receiveMailAccount, String sendPersonName, String receivePersonName, String mailTitle, String mailContent) { this.sendEmailAccount = sendEmailAccount; this.sendEmailPassword = sendEmailPassword; this.receiveMailAccount = receiveMailAccount; this.sendPersonName = sendPersonName; this.receivePersonName = receivePersonName; this.mailTitle = mailTitle; this.mailContent = mailContent; } public String getSendEmailAccount() { return sendEmailAccount; } public void setSendEmailAccount(String sendEmailAccount) { this.sendEmailAccount = sendEmailAccount; } public String getSendEmailPassword() { return sendEmailPassword; } public void setSendEmailPassword(String sendEmailPassword) { this.sendEmailPassword = sendEmailPassword; } public String getReceiveMailAccount() { return receiveMailAccount; } public void setReceiveMailAccount(String receiveMailAccount) { this.receiveMailAccount = receiveMailAccount; } public String getMailTitle() { return mailTitle; } public void setMailTitle(String mailTitle) { this.mailTitle = mailTitle; } public String getMailContent() { return mailContent; } public void setMailContent(String mailContent) { this.mailContent = mailContent; } public String getSendPersonName() { return sendPersonName; } public void setSendPersonName(String sendPersonName) { this.sendPersonName = sendPersonName; } public String getReceivePersonName() { return receivePersonName; } public void setReceivePersonName(String receivePersonName) { this.receivePersonName = receivePersonName; } }
2. jar包依賴
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <!-- mail dependency --> <dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.6.2</version> </dependency>
3. 發(fā)送郵箱實(shí)現(xiàn)
注意:
1. 更改下面的屬性,與實(shí)體類對(duì)應(yīng)
代碼實(shí)現(xiàn)
package cn.bitqian.mail.test; import org.junit.Test; 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; /** * 郵件發(fā)送工具類 * @author echo lovely * @date 2020/9/18 15:54 */ public class MailSendUtils { // 郵箱smtp協(xié)議 這里是使用阿里云的 public static final String myEmailSMTPHost = "smtpdm.aliyun.com"; @Test public void test() { MailInfo mailInfo = new MailInfo("控制臺(tái)所綁定的郵箱賬戶名", "綁定賬戶郵箱密碼", "收件人郵箱名", "發(fā)件人姓名", "收件人姓名", "郵箱標(biāo)題", "郵箱內(nèi)容"); try { sendEmail(mailInfo); } catch (Exception e) { e.printStackTrace(); } } public void sendEmail(MailInfo mailInfo) throws Exception { // 1. 創(chuàng)建參數(shù)配置, 用于連接郵件服務(wù)器的參數(shù)配置 Properties props = new Properties(); // 參數(shù)配置 props.setProperty("mail.transport.protocol", "smtp"); // 使用的協(xié)議(JavaMail規(guī)范要求) props.setProperty("mail.smtp.host", myEmailSMTPHost); // 發(fā)件人的郵箱的 SMTP 服務(wù)器地址 props.setProperty("mail.smtp.auth", "true"); // 需要請(qǐng)求認(rèn)證 // 2. 根據(jù)配置創(chuàng)建會(huì)話對(duì)象, 用于和郵件服務(wù)器交互 Session session = Session.getInstance(props); session.setDebug(true); // 設(shè)置為debug模式, 可以查看詳細(xì)的發(fā)送 log // 3. 創(chuàng)建一封郵件 MimeMessage message = new MailSendUtils().createMimeMessage(session, mailInfo); // 4. 根據(jù) Session 獲取郵件傳輸對(duì)象 Transport transport = session.getTransport(); // 5. 使用 郵箱賬號(hào) 和 密碼 連接郵件服務(wù)器, 這里認(rèn)證的郵箱必須與 message 中的發(fā)件人郵箱一致, 否則報(bào)錯(cuò) transport.connect(mailInfo.getSendEmailAccount(), mailInfo.getSendEmailPassword()); // 6. 發(fā)送郵件, 發(fā)到所有的收件地址, message.getAllRecipients() 獲取到的是在創(chuàng)建郵件對(duì)象時(shí)添加的所有收件人, 抄送人, 密送人 transport.sendMessage(message, message.getAllRecipients()); // 7. 關(guān)閉連接 transport.close(); } public MimeMessage createMimeMessage(Session session, MailInfo mailInfo) throws Exception { // 1. 創(chuàng)建一封郵件 MimeMessage message = new MimeMessage(session); // 2. From: 發(fā)件人(昵稱有廣告嫌疑,避免被郵件服務(wù)器誤認(rèn)為是濫發(fā)廣告以至返回失敗,請(qǐng)修改昵稱) message.setFrom(new InternetAddress(mailInfo.getSendEmailAccount(), mailInfo.getSendPersonName(), "UTF-8")); // 3. To: 收件人(可以增加多個(gè)收件人、抄送、密送) message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(mailInfo.getReceiveMailAccount(), mailInfo.getReceivePersonName(), "UTF-8")); // 4. Subject: 郵件主題(標(biāo)題有廣告嫌疑,避免被郵件服務(wù)器誤認(rèn)為是濫發(fā)廣告以至返回失敗,請(qǐng)修改標(biāo)題) message.setSubject(mailInfo.getMailTitle(), "UTF-8"); // 5. Content: 郵件正文(可以使用html標(biāo)簽)(內(nèi)容有廣告嫌疑,避免被郵件服務(wù)器誤認(rèn)為是濫發(fā)廣告以至返回失敗,請(qǐng)修改發(fā)送內(nèi)容) message.setContent(mailInfo.getMailContent(), "text/html;charset=UTF-8"); // 6. 設(shè)置發(fā)件時(shí)間 message.setSentDate(new Date()); // 7. 保存設(shè)置 message.saveChanges(); return message; } }
總結(jié)
到此這篇關(guān)于Java實(shí)現(xiàn)郵箱發(fā)送功能(阿里云郵箱推送)的文章就介紹到這了,更多相關(guān)Java郵箱發(fā)送(阿里云郵箱推送)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java Swing中的文本框(JTextField)與文本區(qū)(JTextArea)使用實(shí)例
這篇文章主要介紹了Java Swing中的文本框(JTextField)與文本區(qū)(JTextArea)使用實(shí)例,Swing是一個(gè)用于開(kāi)發(fā)Java應(yīng)用程序用戶界面的開(kāi)發(fā)工具包,需要的朋友可以參考下2014-10-10SpringBoot @Validated注解實(shí)現(xiàn)參數(shù)分組校驗(yàn)的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于SpringBoot @Validated注解實(shí)現(xiàn)參數(shù)分組校驗(yàn)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09淺談Java中浮點(diǎn)型數(shù)據(jù)保留兩位小數(shù)的四種方法
今天在進(jìn)行開(kāi)發(fā)的過(guò)程中遇到了一個(gè)小問(wèn)題,是關(guān)于如何將double類型的數(shù)據(jù)保留兩位小數(shù)。具有一定的參考價(jià)值,本文就詳細(xì)的介紹一下2021-09-09SpringBoot分頁(yè)查詢功能的實(shí)現(xiàn)方法
在實(shí)際的項(xiàng)目開(kāi)發(fā)過(guò)程中,分頁(yè)顯示是很常見(jiàn)的頁(yè)面布局,所以學(xué)習(xí)如何實(shí)現(xiàn)分頁(yè)也是必要的,下面這篇文章主要給大家介紹了關(guān)于SpringBoot分頁(yè)查詢功能的實(shí)現(xiàn)方法,需要的朋友可以參考下2022-06-06JavaWeb之Ajax的基本使用與實(shí)戰(zhàn)案例
ajax技術(shù)是使頁(yè)面能局部刷新的一種技術(shù),下面這篇文章主要給大家介紹了關(guān)于JavaWeb之Ajax的基本使用與實(shí)戰(zhàn)案例的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08Java實(shí)現(xiàn)提取不重復(fù)的整數(shù)實(shí)例
這篇文章主要介紹了Java實(shí)現(xiàn)提取不重復(fù)的整數(shù)實(shí)例,具有一定借鑒價(jià)值,需要的朋友可以參考下2017-12-12詳解使用JavaCV/OpenCV抓取并存儲(chǔ)攝像頭圖像
本篇文章主要介紹了使用JavaCV/OpenCV抓取并存儲(chǔ)攝像頭圖像,實(shí)例分析了使用JavaCV/OpenCV抓取并存儲(chǔ)攝像頭圖像的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-04-04java web用servlet監(jiān)聽(tīng)器實(shí)現(xiàn)顯示在線人數(shù)
這篇文章主要為大家詳細(xì)介紹了java web用servlet監(jiān)聽(tīng)器實(shí)現(xiàn)顯示在線人數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03Java如果通過(guò)jdbc操作連接oracle數(shù)據(jù)庫(kù)
這篇文章主要介紹了Java如果通過(guò)jdbc操作連接oracle數(shù)據(jù)庫(kù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09