您好,登錄后才能下訂單哦!
今天小編給大家分享一下Java Email郵件發送如何實現的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
MTA 和 MDA 這樣的服務器軟件通常是現成的,我們通常不會關心這些郵件服務器的內部是如何運行 的。更多的需求場景,是需要發送郵件。例如:促銷商品郵件、驗證碼郵件、消息通知郵件等。常見的 郵件協議有: POP3 、 SMTP 、 IMAP 。
POP3是Post Office Protocol 3的簡稱,即郵局協議的第3個版本,它規定怎樣將個人計算機連接到Internet的郵件 服務器和下載電子郵件的電子協議。它是因特網電子郵件的第一個離線協議標準,POP3允許用戶從服務器上把 郵件存儲到本地主機(即自己的計算機)上,同時刪除保存在郵件服務器上的郵件,而POP3服務器則是遵循 POP3協議的接收郵件服務器,用來接收電子郵件的。
SMTP 的全稱是“Simple Mail Transfer Protocol”,即簡單郵件傳輸協議。它是一組用于從源地址到目的地址傳 輸郵件的規范,通過它來控制郵件的中轉方式。SMTP 協議屬于 TCP/IP 協議簇,它幫助每臺計算機在發送或中 轉信件時找到下一個目的地。SMTP 服務器就是遵循 SMTP 協議的發送郵件服務器。 SMTP 認證,簡單地說就是要求必須在提供了賬戶名和密碼之后才可以登錄 SMTP 服務器,這就使得那些垃圾 郵件的散播者無可乘之機。 增加 SMTP 認證的目的是為了使用戶避免受到垃圾郵件的侵擾。
IMAP全稱是Internet Mail Access Protocol,即交互式郵件存取協議,它是跟POP3類似郵件訪問標準協議之 一。不同的是,開啟了IMAP后,您在電子郵件客戶端收取的郵件仍然保留 在服務器上,同時在客戶端上的操作 都會反饋到服務器上,如:刪除郵件,標記已讀等,服務器上的郵件也會做相應的動作。所以無論從瀏覽器登 錄郵箱或者客戶端 軟件登錄郵箱,看到的郵件以及狀態都是一致的。
POP3協議允許電子郵件客戶端下載服務器上的郵件,但是在客戶端的操作(如移動郵件、標記 已讀等),不會反饋到服務器上,比如通過客戶端收取了郵箱中的3封郵件并移動到其他文件夾,郵 箱服務器上的這些郵件是沒有同時被移動的 。
IMAP提供webmail 與電子郵件客戶端之間的雙向通信,客戶端的操作都會反饋到服務器上,對 郵件進行的操作,服務器上的郵件也會做相應的動作。 IMAP和POP3有什么區別?
發送郵件時,我們需要構造一個 Message 對象,然后調用 Transport.send(Message) 即可完成發送:絕 大多數郵件服務器要求發送方地址和登錄用戶名必須一致,否則發送將失敗。
package com.ljl.email; import java.io.IOException; import java.io.OutputStream; import java.nio.file.Files; import java.nio.file.Paths; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import javax.mail.util.ByteArrayDataSource; import javax.activation.DataHandler; import javax.mail.BodyPart; import javax.mail.Message.RecipientType; public class Demo03 { public static void main(String[] args) { try { //創建Session會話 Session session = JavaMailUtils.createSession(); //創建郵件對象(Message抽象類的子類對象) MimeMessage msg = new MimeMessage(session); msg.setFrom(new InternetAddress("olaiolaio@126.com")); msg.setRecipient(RecipientType.TO ,new InternetAddress("2272789133@qq.com")); msg.setSubject("這是一份測試郵件","utf-8");//標題 //郵件內容復合對象 Multipart multipart = new MimeMultipart(); //正文 BodyPart textPart = new MimeBodyPart(); //參數一:正文內容 //參數二:內容類型;字符編碼機 textPart.setContent("輸了<b>你</b>贏了世界又如何","text/html;charset=utf-8"); //附件 BodyPart imagePart = new MimeBodyPart(); imagePart.setFileName("lin.jpg"); imagePart.setDataHandler(new DataHandler(new ByteArrayDataSource(Files.readAllBytes(Paths.get("D:\\k\\image\\ljj.jpg")), "application/octet-stream"))); //添加至郵件內容 multipart.addBodyPart(textPart);//添加正文 multipart.addBodyPart(imagePart);//添加附件 //設置郵件內容 msg.setContent(multipart); //發送 Transport.send(msg); } catch (MessagingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
以上就是“Java Email郵件發送如何實現”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。