Java實(shí)現(xiàn)郵箱發(fā)送功能實(shí)例(阿里云郵箱推送)
前言
綁定阿里云域名,創(chuàng)建域名賬戶(hù),并配置解析域名賬戶(hù),獲得發(fā)送郵箱的權(quán)限,上限兩百封,超出要¥…
阿里云郵件推送控制臺(tái)
https://www.aliyun.com/product/directmail
申請(qǐng)郵箱并解析域名
https://yq.aliyun.com/articles/707997
1. 郵箱信息實(shí)體類(lèi)
package cn.bitqian.mail.test;
/**
* 郵件內(nèi)容實(shí)體類(lèi)
* @author echo lovely
* @date 2020/9/18 15:47
*/
public class MailInfo {
// 發(fā)件人賬戶(hù)
private String sendEmailAccount;
// 發(fā)件人密碼
private String sendEmailPassword;
// 收件人賬戶(hù)
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包依賴(lài)
<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í)體類(lèi)對(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ā)送工具類(lèi)
* @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)所綁定的郵箱賬戶(hù)名",
"綁定賬戶(hù)郵箱密碼",
"收件人郵箱名", "發(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ā)件人(昵稱(chēng)有廣告嫌疑,避免被郵件服務(wù)器誤認(rèn)為是濫發(fā)廣告以至返回失敗,請(qǐng)修改昵稱(chē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)文章
Springmvc數(shù)據(jù)回顯實(shí)現(xiàn)原理實(shí)例解析
這篇文章主要介紹了Springmvc數(shù)據(jù)回顯實(shí)現(xiàn)原理實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
Java swing實(shí)現(xiàn)酒店管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Java swing實(shí)現(xiàn)酒店管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02
IDEA將Maven項(xiàng)目中指定文件夾下的xml等文件編譯進(jìn)classes的方法
這篇文章主要介紹了IDEA將Maven項(xiàng)目中指定文件夾下的xml等文件編譯進(jìn)classes的方法,幫助大家更好的利用IDEA進(jìn)行Java的開(kāi)發(fā)學(xué)習(xí),感興趣的朋友可以了解下2021-01-01

