Java 後端發送QQ郵件
也是由于這次需要這個功能,就廣搜資料先做了幾個Demo出來
首先需要了解一下常用的幾種郵箱:QQ郵箱、163郵箱、126郵箱、企業郵箱;其中企業郵箱又分為很多企業下的,比如說:網易郵箱、阿裡郵箱等。總之,這些都不重要,隻需要知道怎麼實作就好。
接下來說一下在實作方式上的差別:
1、QQ郵箱
2、163郵箱,163郵箱跟126郵箱是一家的,是以是線上并沒有差別。
本篇文章以QQ郵箱發送至QQ郵箱為例給貼上完整的Demo
下一篇文章會寫到163郵箱發送郵件到其他郵箱(包括QQ郵箱、163郵箱、企業郵箱等)
首先給一個完整的QQ郵件發送的Demo
該Demo為發送一個純文字檔案
public class SendEmailTest {
public static void main(String[] args) {
Map<String,Object> map = new HashMap<>();
Properties properties = new Properties();
properties.put("mail.transport.protocol", "smtp");// 連接配接協定
properties.put("mail.smtp.host", "smtp.qq.com");// 主機名
properties.put("mail.smtp.port", 465);// 端口号
properties.put("mail.smtp.auth", "true");//設定smtp是否需要認證
properties.put("mail.smtp.ssl.enable", "true");// 設定是否使用ssl安全連接配接 ---一般都使用
properties.put("mail.debug", "true");// 設定是否顯示debug資訊 true 會在控制台顯示相關資訊
try{
// 得到回話對象
Session session = Session.getInstance(properties);
// 擷取郵件對象
Message message = new MimeMessage(session);
// 設定發件人郵箱位址
message.setFrom(new InternetAddress("[email protected]"));
// 設定收件人郵箱位址
// message.setRecipients(Message.RecipientType.TO, new InternetAddress[]{
new InternetAddress("[email protected]"),
new InternetAddress("[email protected]"),
new InternetAddress("[email protected]")});//多個收件人
message.setRecipient(Message.RecipientType.TO, new InternetAddress("[email protected]"));//一個收件人
// 設定郵件标題
message.setSubject("女神節快樂!");
// 設定郵件内容
message.setText("事事如意!");
message.setSentDate(new Date());
// 得到郵差對象
Transport transport = session.getTransport();
// 連接配接自己的郵箱賬戶
transport.connect("[email protected]", "ugrcsuflldvqgge");// 密碼為QQ郵箱開通的stmp服務後得到的用戶端授權碼
// 發送郵件
transport.sendMessage(message, message.getAllRecipients());
transport.close();
System.out.println("message = 發送成功!");
}catch (Exception e){
System.out.println("message = 發送失敗!");
}
}
}
該Demo可以直接執行,需要修改的地方隻有收件人位址、發件人位址、發件人授權碼
關于授權碼
由于發送郵件時不是在郵箱内發送,是以第三方登入授權碼
如何擷取QQ授權碼
Java發送郵件的幾種方式
如果覺得該文章對你有用,請手動為我點贊,支援一下吧!