Java mail郵箱發送
- 1. 郵箱資訊物體類
- 2. jar包依賴
- 3. 發送郵箱實作
系結阿里云域名,創建域名賬戶,并配置決議域名賬戶,獲得發送郵箱的權限,上限兩百封,超出要¥…
- 阿里云郵件推送控制臺
- https://www.aliyun.com/product/directmail
- 申請郵箱并決議域名
- https://yq.aliyun.com/articles/707997
1. 郵箱資訊物體類
package cn.bitqian.mail.test;
/**
* 郵件內容物體類
* @author echo lovely
* @date 2020/9/18 15:47
*/
public class MailInfo {
// 發件人賬戶
private String sendEmailAccount;
// 發件人密碼
private String sendEmailPassword;
// 收件人賬戶
private String receiveMailAccount;
// 發送人姓名
private String sendPersonName;
// 收件人姓名
private String receivePersonName;
// 郵件標題
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. 發送郵箱實作
注意:
1. 更改下面的屬性,與物體類對應

代碼實作
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;
/**
* 郵件發送工具類
* @author echo lovely
* @date 2020/9/18 15:54
*/
public class MailSendUtils {
// 郵箱smtp協議 這里是使用阿里云的
public static final String myEmailSMTPHost = "smtpdm.aliyun.com";
@Test
public void test() {
MailInfo mailInfo = new MailInfo("控制臺所系結的郵箱賬戶名",
"系結賬戶郵箱密碼",
"收件人郵箱名", "發件人姓名",
"收件人姓名", "郵箱標題", "郵箱內容");
try {
sendEmail(mailInfo);
} catch (Exception e) {
e.printStackTrace();
}
}
public void sendEmail(MailInfo mailInfo) throws Exception {
// 1. 創建引數配置, 用于連接郵件服務器的引數配置
Properties props = new Properties(); // 引數配置
props.setProperty("mail.transport.protocol", "smtp"); // 使用的協議(JavaMail規范要求)
props.setProperty("mail.smtp.host", myEmailSMTPHost); // 發件人的郵箱的 SMTP 服務器地址
props.setProperty("mail.smtp.auth", "true"); // 需要請求認證
// 2. 根據配置創建會話物件, 用于和郵件服務器互動
Session session = Session.getInstance(props);
session.setDebug(true); // 設定為debug模式, 可以查看詳細的發送 log
// 3. 創建一封郵件
MimeMessage message = new MailSendUtils().createMimeMessage(session, mailInfo);
// 4. 根據 Session 獲取郵件傳輸物件
Transport transport = session.getTransport();
// 5. 使用 郵箱賬號 和 密碼 連接郵件服務器, 這里認證的郵箱必須與 message 中的發件人郵箱一致, 否則報錯
transport.connect(mailInfo.getSendEmailAccount(), mailInfo.getSendEmailPassword());
// 6. 發送郵件, 發到所有的收件地址, message.getAllRecipients() 獲取到的是在創建郵件物件時添加的所有收件人, 抄送人, 密送人
transport.sendMessage(message, message.getAllRecipients());
// 7. 關閉連接
transport.close();
}
public MimeMessage createMimeMessage(Session session, MailInfo mailInfo) throws Exception {
// 1. 創建一封郵件
MimeMessage message = new MimeMessage(session);
// 2. From: 發件人(昵稱有廣告嫌疑,避免被郵件服務器誤認為是濫發廣告以至回傳失敗,請修改昵稱)
message.setFrom(new InternetAddress(mailInfo.getSendEmailAccount(), mailInfo.getSendPersonName(), "UTF-8"));
// 3. To: 收件人(可以增加多個收件人、抄送、密送)
message.setRecipient(MimeMessage.RecipientType.TO,
new InternetAddress(mailInfo.getReceiveMailAccount(), mailInfo.getReceivePersonName(), "UTF-8"));
// 4. Subject: 郵件主題(標題有廣告嫌疑,避免被郵件服務器誤認為是濫發廣告以至回傳失敗,請修改標題)
message.setSubject(mailInfo.getMailTitle(), "UTF-8");
// 5. Content: 郵件正文(可以使用html標簽)(內容有廣告嫌疑,避免被郵件服務器誤認為是濫發廣告以至回傳失敗,請修改發送內容)
message.setContent(mailInfo.getMailContent(), "text/html;charset=UTF-8");
// 6. 設定發件時間
message.setSentDate(new Date());
// 7. 保存設定
message.saveChanges();
return message;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/94600.html
標籤:其他
上一篇:JAVA基礎——集合框架(二)List集合(Vector集合,ArrayList集合,LinkedList集合)各集合方法介紹,去除重復元素,堆疊堆模擬,foreach陳述句,陣列轉集合及集合轉陣列
