文章目錄
- 1、介紹
- 2、郵箱配置
-
- 1、直接使用應用專用密碼: 先開啟兩步驗證, 在配置應用專用密碼.
- 2、啟用郵箱POP
- 2、代碼
- 3、注意點
- 4、伺服器發送郵件
1、介紹
網上的Google郵件發送也有很多, 這裡也隻是把我自己碰到的一些問題給記錄一下
package com.tolern.base.util.email;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.util.Date;
import java.util.Properties;
/**
* @author Tomorrow
* @date 2020/11/2 17:41
*/
public class GoogleTest {
/*
* gmail郵箱SSL方式
*/
private static void gmailssl(Properties props) {
final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
props.put("mail.debug", "true");
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.ssl.enable", "true");
props.put("mail.smtp.socketFactory.class", SSL_FACTORY);
props.put("mail.smtp.port", "465");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.auth", "true");
}
//gmail郵箱的TLS方式
private static void gmailtls(Properties props) {
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "587");
}
/**
* 建立郵件内容 需科學上網
*
* @param sentToEmail 接收人郵箱
* @return
* @throws Exception
*/
public static boolean getMimeMessage(String sentToEmail) throws Exception {
//1.建立一封郵件的執行個體對象
Properties props = new Properties();
//選擇ssl方式
gmailtls(props);
final String username = "[email protected]";// gmail 郵箱
final String password = "123132";// Google應用專用密碼
// 當做多商戶的時候需要使用getInstance, 如果隻是一個郵箱發送的話就用getDefaultInstance
// Session.getDefaultInstance 會将username,password儲存在session會話中
// Session.getInstance 不進行儲存
Session session = Session.getInstance(props,
new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
MimeMessage msg = new MimeMessage(session);
//2.設定發件人位址
msg.setFrom(new InternetAddress(sentToEmail));
/**
* 3.設定收件人位址(可以增加多個收件人、抄送、密送),即下面這一行代碼書寫多行
* MimeMessage.RecipientType.TO:發送
* MimeMessage.RecipientType.CC:抄送
* MimeMessage.RecipientType.BCC:密送
*/
msg.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(sentToEmail));
//4.設定郵件主題
msg.setSubject("To reset your password!", "UTF-8");
// 6. 建立文本"節點"
MimeBodyPart text = new MimeBodyPart();
// 這裡添加圖檔的方式是将整個圖檔包含到郵件内容中, 實際上也可以以 http 連結的形式添加網絡圖檔
text.setContent("<p>親愛的使用者:</p>" +
"<p> 您好! 您正在進行重置密碼操作, 本次生成的密碼為:</p>" +
"<p> \u200B" + 1234 + " (為了保障您帳号的安全性,請盡快修改密碼)</p>" +
"<p><br></p><p>該郵件為系統自動發送, 請勿進行回複!</p>" +
"<p><br></p>",
"text/html;charset=UTF-8");
// 7. (文本+圖檔)設定 文本 和 圖檔"節點"的關系(将 文本 和 圖檔"節點"合成一個混合"節點")
MimeMultipart mm_text_image = new MimeMultipart();
mm_text_image.addBodyPart(text);
mm_text_image.setSubType("related"); // 關聯關系
// 11. 設定整個郵件的關系(将最終的混合"節點"作為郵件的内容添加到郵件對象)
msg.setContent(mm_text_image);
//設定郵件的發送時間,預設立即發送
msg.setSentDate(new Date());
Transport.send(msg);
return true;
}
public static void main(String[] args) throws Exception {
boolean mimeMessage = getMimeMessage("[email protected]");
System.out.println(mimeMessage);
}
}
<div>
<div style="text-align: center; border-bottom: 2px solid #ccc; padding: 20px 0;">
<img style="width: 225px;" src="https://***-image.oss-eu-central-1***m/***/***.png" />
</div>
<div style="padding: 10px 25px;">
<p style="font-size: 20px; font-family: 'arial'; color: rgba(0,0,0,0.9);">Hi (CLIENT_NAME)!</p>
<div style="height: 5px;"></div>
<p style="font-size: 20px; font-family: 'arial'; color: rgba(0,0,0,0.9);">Please click on the link below to verify your email address:</p>
<div style="height: 10px;"></div>
<a href="BINDING_EMAIL" style="display: block; text-decoration: none; background: #61B9AA; text-align: center; height: 70px; line-height: 70px; margin: 0 auto; border-radius: 10px;" target="_blank" style="text-align:center;">
<span style="font-family: arial; color: #fff;font-size: 22px;">
Verify Email
</span>
</a>
</p>
<div style="height: 5px;"></div>
<p style="font-size: 20px; font-family: 'arial'; color: rgba(0,0,0,0.9);">Or, if the link is not working, copy and paste this code in the app: <span style="color: #61B9AA;">NUMBER_EMAIL</span></p>
<div style="height: 5px;"></div>
<p style="font-size: 20px; font-family: 'arial'; color: rgba(0,0,0,0.9);">Happy charging!</p>
<div style="height: 5px;"></div>
<p style="font-size: 20px; font-family: 'arial'; color: rgba(0,0,0,0.9);">The Chargie Team</p>
</div>
</div>
3、注意點
1、安裝mailx:yum install -y mailx
2、編輯配置檔案:vim /etc/mail.rc
在最後面添加:
set smtp=smtps://smtp.gmail.com:465
set smtp-auth=login
set [email protected](自己的郵箱)
set smtp-auth-password=123132(應用專用密碼)
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
3、驗證發送郵件:echo "測試測試測試測試測試測試" | mail -v -s "測試測試測試測試" [email protected]