日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

015_JavaMail

發布時間:2025/4/17 java 129 豆豆
生活随笔 收集整理的這篇文章主要介紹了 015_JavaMail 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 郵件服務器

1.1. 類似于web服務器(如Tomcat)、數據庫服務器(如MySql), 把一臺郵件服務器端軟件放在網絡上, 即可供廣大網絡用戶使用。

1.2. 類似于郵局, 用戶發郵件時, 郵件服務器處理, 再投遞給相應的郵箱地址。

1.3. 比如: 有sina、sohu、163、qq等等郵件服務器。

2. 電子郵箱: 郵件服務器中的賬戶, 服務器會為每個郵箱賬戶分配地址和空間。

3. 郵件收發協議

3.1. SMTP(發送郵件協議, 默認端口25)。

3.2. POP3(收取郵件協議, 默認端口110, 不能在線操作)。

3.3. IMAP(收取郵件協議, 默認端口143, 運行在TCP/IP協議之上, 與POP3的主要區別: 可以在線操作, 用戶可以不用把所有的郵件全部下載, 可以通過客戶端直接對服務器上的郵件進行操作)。

3.4. 開通qq郵件的SMTP服務, 讓自己的qq郵件成為一個可以發送郵件的服務器

3.4.1. 登錄自己的qq郵箱, 點擊設置, 然后點擊賬戶

3.4.2. 找到"POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務", 點擊"開啟"按鈕

3.4.3. 按提示發送短信, 發送完成點擊"我已發送"按鈕

3.4.4. 開通完成

4. 創建電子郵件

4.1. 郵件頭

  • from字段(發件人)
  • to字段(收件人)
  • subject字段(郵件標題)
  • cc字段(抄送) / bcc字段(密送)

4.2. 郵件體

  • 郵件內容

4.3. 抄送: A發給B, 選擇抄送給C, B可以看見郵件抄送給C。

4.4. 密送: A發給B, 選擇暗送給C, B可以看見郵件, 但是不能看到郵件發給C。

4.5. 郵件創建步驟

4.5.1. 創建一個郵件對象。

4.5.2. 設置發件人, 收件人, 可選增加多個收件人, 抄送人, 密送人。

4.5.3. 設置郵件的主題(標題)。

4.5.4. 設置郵件的正文(內容)。

4.5.5. 設置顯示的發送時間。

4.5.6. 保存到本地。

5. JavaMail

5.1. JavaMail是一套郵件收發程序API, 編寫JavaMail程序就是編寫郵件客戶端程序(類似于qq、新浪等郵件客戶端)。

5.2. Github上JavaMail下載地址: https://javaee.github.io/javamail/

5.3. 例子

5.3.1.?新建一個名為JavaMail的Java項目, 同時添加相關jar包

5.3.2.?添加幾個文件

5.3.3.?編寫MailUtils.java

package com.zr.mail;import java.util.Date; import java.util.List; import java.util.Properties; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage;public class MailUtils {// SMTP服務器地址private final static String SMTP = "smtp.qq.com";// 發件賬戶private final static String USER = "xxxxxx@qq.com"; // 發件密碼private final static String PASSWORD = "drnhiqgdgad"; // 發件人public static String FROM = "xxxxxx@qq.com";// 收件人public static String RECIPIENT = "oooooo@qq.com";/*** 創建郵件服務器鏈接會話*/public static Session createSession() {// 創建參數配置, 用于連接郵件服務器的參數配置Properties props = new Properties();props.setProperty("mail.transport.protocol", "smtp");props.setProperty("mail.smtp.host", SMTP);// 連接認證props.setProperty("mail.smtp.auth", "true");// 在控制臺顯示連接日志信息props.put("mail.debug", "true");// 與郵件服務器連接會話Session session = Session.getInstance(props);return session;}/*** 發送郵件* @param session 與郵件服務器連接會話* @param message 郵件信息* @throws MessagingException */public static void sendMail(Session session, Message message) throws MessagingException {// 1. 根據Session獲取郵件傳輸對象Transport transport = session.getTransport();// 2. 使用 郵箱賬號和密碼連接郵件服務器, 這里認證的郵箱必須與 message中的發件人郵箱一致, 否則報錯transport.connect(USER, PASSWORD);// 3. 發送郵件, 發到所有的收件地址, message.getAllRecipients()獲取到的是在創建郵件對象時添加的所有收件人, 抄送人, 密送人transport.sendMessage(message, message.getAllRecipients());// 4. 關閉連接transport.close();}private static Message createMessage(Session session, String sendMail, String subject, List<String> tos, List<String> ccs, List<String> bccs) throws AddressException, MessagingException {// 1. 創建一封郵件Message message = new MimeMessage(session);// 2. From: 發件人message.setFrom(new InternetAddress(sendMail));// 3. To: 收件人(可以增加多個收件人、抄送、密送)for (String item : tos) {message.addRecipient(MimeMessage.RecipientType.TO, new InternetAddress(item));}if(ccs != null) {for (String item : ccs) {message.addRecipient(MimeMessage.RecipientType.CC, new InternetAddress(item));}}if(bccs != null) {for (String item : bccs) {message.addRecipient(MimeMessage.RecipientType.BCC, new InternetAddress(item));}}// 4. Subject: 郵件主題message.setSubject(subject);// 5. 設置發件時間message.setSentDate(new Date());return message;}public static Message textMessage(Session session, String sendMail, String subject, Object o, List<String> tos, List<String> ccs, List<String> bccs) throws AddressException, MessagingException {Message message = createMessage(session, sendMail, subject, tos, ccs, bccs);message.setContent(o, "text/html;charset=UTF-8"); // 郵件正文message.saveChanges(); // 保存設置return message;}public static Message multiMessage(Session session, String sendMail, String subject, Multipart m, List<String> tos, List<String> ccs, List<String> bccs) throws AddressException, MessagingException {Message message = createMessage(session, sendMail, subject, tos, ccs, bccs);message.setContent(m); // 郵件正文message.saveChanges(); // 保存設置return message;} }

5.3.4.?編寫MyMail.java

package com.zr.mail;import java.io.IOException; import java.util.Arrays; import java.util.List; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.Session; import javax.mail.internet.AddressException; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMultipart;public class MyMail {public static void main(String[] args) {try {Session session = MailUtils.createSession();Message message = textMessage(session, MailUtils.FROM, Arrays.asList(MailUtils.RECIPIENT), Arrays.asList("aihiao@sina.com"), null);MailUtils.sendMail(session, message);} catch (Exception e) {e.printStackTrace();}}// 純文本郵件public static Message textMessage(Session session, String sendMail, List<String> tos, List<String> ccs, List<String> bccs) throws AddressException, MessagingException {return MailUtils.textMessage(session, sendMail, "測試Java Mail", "只發送了純文本的郵件", tos, ccs, bccs);}// 文本和圖片郵件public static Message imageMessage(Session session, String sendMail, List<String> tos, List<String> ccs, List<String> bccs) throws AddressException, MessagingException, IOException {// 1. 圖片 MimeBodyPart pic1 = new MimeBodyPart();pic1.attachFile("config/ani_08.png");pic1.setContentID("ani_08");MimeBodyPart pic2 = new MimeBodyPart();pic2.attachFile("config/ani_09.png");pic2.setContentID("ani_09");// 2. 文字MimeBodyPart content = new MimeBodyPart();content.setContent("<html><body><img src='cid:ani_08' /><img src='cid:ani_09' /><br />包含圖片的郵件</body></html>", "text/html;charset=UTF-8");// 3. 封裝文字和圖片Multipart mp = new MimeMultipart();mp.addBodyPart(pic1);mp.addBodyPart(pic2);mp.addBodyPart(content);return MailUtils.multiMessage(session, sendMail, "測試Java Mail", mp, tos, ccs, bccs);}// 文本和文件郵件public static Message fileMessage(Session session, String sendMail, List<String> tos, List<String> ccs, List<String> bccs) throws AddressException, MessagingException, IOException {// 1. 文件MimeBodyPart file = new MimeBodyPart();file.attachFile("config/ActiveMQ中文教程參考手冊.pdf");// 2. 文字MimeBodyPart content = new MimeBodyPart();content.setContent("<html><body>包含附件的郵件</body></html>", "text/html;charset=UTF-8");// 3. 封裝文字和附件Multipart mp = new MimeMultipart();mp.addBodyPart(file);mp.addBodyPart(content);return MailUtils.multiMessage(session, sendMail, "測試Java Mail", mp, tos, ccs, bccs);}// 文本、圖片和文件郵件public static Message imageFileMessage(Session session, String sendMail, List<String> tos, List<String> ccs, List<String> bccs) throws AddressException, MessagingException, IOException {// 1. 圖片 MimeBodyPart pic1 = new MimeBodyPart();pic1.attachFile("config/ani_08.png");pic1.setContentID("ani_08");MimeBodyPart pic2 = new MimeBodyPart();pic2.attachFile("config/ani_09.png");pic2.setContentID("ani_09");// 2. 文件MimeBodyPart file = new MimeBodyPart();file.attachFile("config/ActiveMQ中文教程參考手冊.pdf");// 3. 文字MimeBodyPart content = new MimeBodyPart();content.setContent("<html><body><img src='cid:ani_08' /><img src='cid:ani_09' /><br />包含圖片和附件的郵件</body></html>", "text/html;charset=UTF-8");// 4. 封裝文字、圖片和附件Multipart mp = new MimeMultipart();mp.addBodyPart(pic1);mp.addBodyPart(pic2);mp.addBodyPart(file);mp.addBodyPart(content);return MailUtils.multiMessage(session, sendMail, "測試Java Mail", mp, tos, ccs, bccs);} }

5.3.5.?發送純文本給daiyingxiong同時發送給了aihiao

5.3.6.?發送純文本、圖片和文件給daiyingxiong同時抄送給了aihiao

總結

以上是生活随笔為你收集整理的015_JavaMail的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。