Java實現網易企業163郵箱傳送郵件
前提:
本文介紹兩種郵件傳送,一個是網易163郵箱,另一個是網易企業163郵箱
專案地址:https://github.com/su1573/mail-send
一、登入郵箱設定
網易163郵箱
1、登入個人163郵箱,如圖選中POP3/SMTP/IMAP
2、開啟POP3/SMTP服務,根據提示獲取授權碼,授權要儲存好,一會兒要用到
網易企業163郵箱
這個我這裡是沒有上面的POP3/SMTP服務,在程式碼中用的直接是登入郵箱密碼
二、jar包引用
<!-- javax.mai 核心包 -->
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.5</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>5.2.11.RELEASE</version>
</dependency>
三、程式碼演示
package com.su.mailsend.service;
import com.sun.mail.util.MailSSLSocketFactory;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.*;
import java.io.File;
import java.util.Date;
import java.util.Properties;
/**
* @program: program
* @Date: 2020/12/16 19:26
* @Author: Mr.SU
* @Description:
*/
public class MailStmpSend {
/**
* @Description: 網易163郵箱,傳送郵件
* @param: "[to, text, title]"
* @Return: boolean
* @Author: supenghui
* @Date: 2020/12/16 16:54
*/
private void sendMail(String to, String text, String title) throws Exception {
String from = "xxx@163.com"; // 發件人郵箱地址
String user = "xxx@163.com"; // 發件人稱號,同郵箱地址
String password = "VHXCLTZDEOFFWNSA"; // 發件人郵箱客戶端授權碼
// 一、建立引數配置, 用於連線郵件伺服器的引數配置
Properties props = new Properties();
props.setProperty("mail.smtp.host", "smtp.163.com"); // 設定傳送郵件的郵件伺服器的屬性(這裡使用網易的smtp伺服器)
props.put("mail.smtp.host", "smtp.163.com");
props.put("mail.smtp.auth", "true"); // 需要經過授權,也就是使用者名稱和密碼的校驗,這樣才能通過驗證(一定要有這一條)
// 二、根據配置建立會話物件, 用於和郵件伺服器互動
Session session = Session.getDefaultInstance(props);
session.setDebug(true); // true 在控制檯(console)上看到傳送郵件的過程
// 三、 建立一封複雜郵件(文字+附件)
try {
// 3.1. 建立郵件物件
MimeMessage message = new MimeMessage(session); // 載入發件人地址
// 3.2. From: 發件人
message.setFrom(new InternetAddress(from));
// 3.3. To: 收件人(可以增加多個收件人)
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // 載入收件人地址
// 3.4. To: 收件人(可以增加多個抄送)
message.addRecipient(Message.RecipientType.CC, new InternetAddress(to)); // 載入抄件人地址
// 3.5. Subject: 郵件主題
message.setSubject(title); // 載入標題
// 3.6. 郵件內容
MimeMultipart multipart = new MimeMultipart(); // 向multipart物件中新增郵件的各個部分內容,包括文字內容和附件
MimeBodyPart contentPart = new MimeBodyPart(); // 設定郵件的文字內容
contentPart.setContent(text, "text/html;charset=utf-8");
multipart.addBodyPart(contentPart);
// 3.7. 郵件附件
String attPath = "D:\\data\\ftpUpload\\2020\\12\\10\\蓋章指令檔案.zip";
MimeBodyPart attachment = new MimeBodyPart();
DataHandler dh = new DataHandler(new FileDataSource(attPath)); // 讀取本地檔案
attachment.setDataHandler(dh); // 將附件資料新增到“節點”
attachment.setFileName(MimeUtility.encodeText(dh.getName())); // 設定附件的檔名(需要編碼)
multipart.addBodyPart(attachment);
multipart.setSubType("mixed"); // 混合關係
// 3.8. 設定整個郵件的關係(將最終的混合“節點”作為郵件的內容新增到郵件物件)
message.setContent(multipart);
// 3.9. 設定發件時間
message.setSentDate(new Date());
// 3.10. 儲存上面的所有設定
message.saveChanges(); // 儲存變化
// 四、 根據 Session 獲取郵件傳輸物件
Transport transport = session.getTransport("smtp");
// 五、 使用 郵箱賬號 和 授權碼 連線郵件伺服器
transport.connect("smtp.163.com", user, password);
// 六、 傳送郵件,
transport.sendMessage(message, message.getAllRecipients());
// 七、 關閉連線
transport.close();
} catch (MessagingException e) {
e.printStackTrace();
}
}
/**
* @Description: 網易企業163郵箱傳送郵件
* @param: "[]"
* @Return: void
* @Author: supenghui
* @Date: 2020/12/17 13:55
*/
public void sendHtmlMail() {
try {
String from = "職業年金受託";//發件人暱稱展示
// String[] to = {"supenghui@sinosoft.com.cn", "supenghui@sinosoft.com.cn"};//接收郵箱
String to = "xxx@163.com";//接收郵箱
// String[] copy = {"supenghui@sinosoft.com.cn", "supenghui@sinosoft.com.cn"};//抄送郵箱
String copy = "xxx@163.com";//抄送郵箱
String subject = "測試郵件";//郵件主題
String text = "你好,這是一封測試郵件,無需回覆。";
String host = "smtphz.qiye.163.com";//163企業郵箱smtp
String username = "xxx@su-abc.com.cn";//企業郵箱 @後面是域名
String password = "123456";//企業郵箱密碼
// 一、建立引數配置, 用於連線郵件伺服器的引數配置
Properties prop = new Properties();
prop.setProperty("mail.smtp.auth", "true"); // 需要經過授權,也就是使用者名稱和密碼的校驗,這樣才能通過驗證(一定要有這一條)
prop.setProperty("mail.smtp.timeout", "994"); // 加密埠(ssl) 可通過 https://qiye.163.com/help/client-profile.html 進行查詢
MailSSLSocketFactory sf = new MailSSLSocketFactory();// SSL加密
sf.setTrustAllHosts(true); // 設定信任所有的主機
prop.put("mail.smtp.ssl.enable", "true");
prop.put("mail.smtp.ssl.socketFactory", sf);
//二、建立一封複雜郵件(文字+附件)
JavaMailSenderImpl javaMailSend = new JavaMailSenderImpl();
// 3.1. 建立郵件物件
MimeMessage message = javaMailSend.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(message, true, "utf-8");
// 3.2. From: 發件人
String nick = MimeUtility.encodeText(from);//設定暱稱
messageHelper.setFrom(new InternetAddress(nick + " <" + username + ">"));// 郵件傳送者
// 3.3. To: 收件人(可以增加多個收件人)
messageHelper.setTo(to); //收件人
// 3.4. To: 收件人(可以增加多個抄送)
messageHelper.setCc(copy); //抄送人
// 3.5. Subject: 郵件主題
messageHelper.setSubject(subject); //郵件標題
// 3.6. 郵件內容
messageHelper.setText(text, true); //文字中,如需換行,要用<br>,不能用\n換行
// 3.7. 郵件附件
File file = new File("D:\\data\\ftpUpload\\2020\\12\\10\\蓋章指令檔案.zip");
messageHelper.addAttachment(MimeUtility.encodeWord(file.getName()), file);
// 3.8. 設定郵件伺服器登入資訊
javaMailSend.setHost(host);
javaMailSend.setUsername(username);
javaMailSend.setPassword(password);
javaMailSend.setJavaMailProperties(prop);
// 六、 傳送郵件,
javaMailSend.send(message);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
try {
MailStmpSend ds = new MailStmpSend();
// ds.sendMail("xxx@qq.com", "你好,這是一封測試郵件,無需回覆。", "測試郵件");
// ds.sendMail("xxxx@163.com", "你好,這是一封測試郵件,無需回覆。", "測試郵件");
ds.sendHtmlMail();
} catch (Exception e) {
e.printStackTrace();
}
}
}
四、效果展示
網易163郵箱傳送郵件:
因篇幅問題,附件在最下面,這裡就不截了
網易企業163郵箱傳送郵件:
相關文章
- golang傳送郵件(qq郵箱)Golang
- win10郵件同步163郵箱的方法_win10郵件怎麼繫結163郵箱實現同步Win10
- 163郵箱傳送郵件通知異常 org.springframework.mail.MailAuthenticationException: Authentication failedSpringFrameworkAIException
- Java網易163郵箱工具類-部署到LinuxJavaLinux
- JavaMail:java使用QQ郵箱傳送郵件簡單版。JavaAI
- spring boot配置QQ郵箱傳送郵件Spring Boot
- 谷歌郵箱,配置傳送郵件密碼谷歌密碼
- java 如何實現傳送郵件 email?JavaAI
- java郵件傳送Java
- 如何傳送電子郵件到別人郵箱?電子郵件傳送的方法
- JavaMailSender怎麼傳送163和qq郵件JavaAI
- python實現傳送郵件Python
- 企業郵箱在傳送郵件時失敗的原因是什麼
- 一次性解決python smtp 傳送outlook郵件,163郵件,qq郵件等等.Python
- oracle 傳送郵件 實現方法Oracle
- python實現郵件的傳送Python
- Java Mail 郵件傳送(二):簡單封裝的郵件傳送JavaAI封裝
- SpringBoot整合Mail傳送郵件&傳送模板郵件Spring BootAI
- 怎麼登陸163郵箱?163的郵箱有哪些實用技巧?
- 傳送郵件
- 郵件傳送
- Spring Boot實現傳送QQ郵件Spring Boot
- Springboot+Javamail實現郵件傳送Spring BootJavaAI
- SpringBoot實現傳送電子郵件Spring Boot
- 如何用python實現郵箱傳送資訊Python
- 郵箱傳送模組
- python實現基於smtp傳送郵件Python
- Python 實現郵件傳送功能(進階)Python
- Python 實現郵件傳送功能(初級)Python
- SpringBoot傳送郵件Spring Boot
- phpcms傳送郵件PHP
- 郵件的傳送
- Laravel傳送郵件Laravel
- Laravel 傳送郵件Laravel
- thinkjs 傳送郵件JS
- PHP傳送郵件PHP
- nodejs 傳送郵件NodeJS
- python傳送郵件Python