日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

java實現郵件發送

瀏覽:31日期:2022-09-02 13:46:44

本文實例為大家分享了java實現郵件發送的具體代碼,供大家參考,具體內容如下

1.使用socket通信功能實現java的郵件傳輸

1.1 什么是socet

Socket的英文原義是“孔”或“插座”。在網絡編程中,網絡上的兩個程序通過一個雙向的通信連接實現數據的交換,這個連接的一端稱為一個socket。Socket套接字是通信的基石,是支持TCP/IP協議的網絡通信的基本操作單元。它是網絡通信過程中端點的抽象表示,包含進行網絡通信必須的五種信息:連接使用的協議,本地主機的IP地址,本地進程的協議端口,遠地主機的IP地址,遠地進程的協議端口。Socket本質是編程接口(API),對TCP/IP的封裝,TCP/IP也要提供可供程序員做網絡開發所用的接口,這就是Socket編程接口;HTTP是轎車,提供了封裝或者顯示數據的具體形式;Socket是發動機,提供了網絡通信的能力。

1.2.Socket的原理

Socket實質上提供了進程通信的端點。進程通信之前,雙方首先必須各自創建一個端點,否則是沒有辦法建立聯系并相互通信的。正如打電話之前,雙方必須各自擁有一臺電話機一樣套接字之間的連接過程可以分為三個步驟:服務器監聽,客戶端請求,連接確認。1、服務器監聽:是服務器端套接字并不定位具體的客戶端套接字,而是處于等待連接的狀態,實時監控網絡狀態。2、客戶端請求:是指由客戶端的套接字提出連接請求,要連接的目標是服務器端的套接字。為此,客戶端的套接字必須首先描述它要連接的服務器的套接字,指出服務器端套接字的地址和端口號,然后就向服務器端套接字提出連接請求。3、連接確認:是指當服務器端套接字監聽到或者說接收到客戶端套接字的連接請求,它就響應客戶端套接字的請求,建立一個新的線程,把服務器端套接字的描述發給客戶端,一旦客戶端確認了此描述,連接就建立好了。而服務器端套接字繼續處于監聽狀態,繼續接收其他客戶端套接字的連接請求。

1.3. 基于java的socket網絡編程實現

Server端Listen監聽某個端口是否有連接請求,Client端向Server 端發出連接請求,Server端向Client端發回Accept接受消息。這樣一個連接就建立起來了。Server端和Client端都可以通過Send,Write等方法與對方通信。對于一個功能齊全的Socket,都要包含以下基本結構,其工作過程包含以下四個基本的步驟:1、創建Socket;2、 打開連接到Socket的輸入/出流;3、按照一定的協議對Socket進行讀/寫操作;4、關閉Socket。

2.具體代碼實現

我們將用代碼完成郵件的發送。這在實際項目中應用的非常廣泛,比如注冊需要發送郵件進行賬號激活,再比如OA項目中利用郵件進行任務提醒等等。

2.1.使用Java發送 E-mail 十分簡單,但是首先你應該準備

JavaMail API

<dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version></dependency>

Java Activation Framework

<dependency> <groupId>javax.activation</groupId> <artifactId>activation</artifactId> <version>1.1.1</version></dependency>

得到兩個jar包

2.2.獲取對應郵箱的權限 (以qq郵箱為例)

QQ郵箱需要安全驗證,我們需要獲取他對應的權限;進入QQ郵箱?>郵箱設置?>賬戶,下滑找到POP3/IMAP/SMTP/Exchange/CardDav/CalDav服務,開啟POP3/SMTP服務,如圖所示:

java實現郵件發送

java實現郵件發送

java實現郵件發送

java實現郵件發送

2.3.下面開始進入編程階段:

package com.cn.own.util;import com.cn.own.model.EmailModel;import com.sun.mail.util.MailSSLSocketFactory;import javax.mail.*;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import java.util.Properties;public class JavaSocket { private final static String emailKey='16位的授權碼'; private final static String emailId_send='發件人郵箱';//注:要和你的16位授權碼對應的郵箱 private final static String emailId_receive='收件人郵箱'; public static void sendEmail(EmailModel emailModel) throws Exception{ Properties prop = new Properties(); prop.setProperty('mail.host', 'smtp.qq.com'); //// 設置QQ郵件服務器 prop.setProperty('mail.transport.protocol', 'smtp'); // 郵件發送協議 prop.setProperty('mail.smtp.auth', 'true'); // 需要驗證用戶名密碼 // 關于QQ郵箱,還要設置SSL加密,加上以下代碼即可 MailSSLSocketFactory sf = new MailSSLSocketFactory(); sf.setTrustAllHosts(true); prop.put('mail.smtp.ssl.enable', 'true'); prop.put('mail.smtp.ssl.socketFactory', sf); //使用JavaMail發送郵件的5個步驟 //創建定義整個應用程序所需的環境信息的 Session 對象 Session session = Session.getDefaultInstance(prop, new Authenticator() { public PasswordAuthentication getPasswordAuthentication() { //發件人郵件用戶名、授權碼 return new PasswordAuthentication(emailId_send, emailKey); } }); //開啟Session的debug模式,這樣就可以查看到程序發送Email的運行狀態 session.setDebug(true); //2、通過session得到transport對象 Transport ts = session.getTransport(); //3、使用郵箱的用戶名和授權碼連上郵件服務器 ts.connect('smtp.qq.com', emailId_send, emailKey); //4、創建郵件 //創建郵件對象 MimeMessage message = new MimeMessage(session); //指明郵件的發件人 message.setFrom(new InternetAddress(emailId_receive)); //指明郵件的收件人,現在發件人和收件人是一樣的,那就是自己給自己發 message.setRecipient(Message.RecipientType.TO, new InternetAddress(emailId_receive)); //郵件的標題 message.setSubject(emailModel.getTitle()); //郵件的文本內容 message.setContent(emailModel.getMessage(), 'text/html;charset=UTF-8'); //5、發送郵件 ts.sendMessage(message, message.getAllRecipients()); // re=ts ts.close(); }}

下面附上EmailModel

package com.cn.own.model;public class EmailModel { private String title;//郵件標題 private String message;//郵件內容 public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; }}

下面我們用一個單元測試進行測試:

package com.cn.own.junitTest;import com.cn.own.util.JavaSocket;import org.junit.runner.RunWith;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringRunner;@RunWith(SpringRunner.class)@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)public class Test { @org.junit.Test public void testSendEmail() throws Exception{ JavaSocket.sendEmail(new EmailModel('title','message')); }}

至此就結束了簡單的文本類型的郵件發送

3.帶圖片和附件的郵件

先認識兩個類一個名詞:MIME(多用途互聯網郵件擴展類型)MimeBodyPart類javax.mail.internet.MimeBodyPart類 表示的是一個MIME消息,它和MimeMessage類一樣都是從Part接口繼承過來。MimeMultipart類javax.mail.internet.MimeMultipart是抽象類 Multipart的實現子類,它用來組合多個MIME消息。一個MimeMultipart對象可以包含多個代表MIME消息的MimeBodyPart對象。

3.1.代碼實現

3.1.1 創建包含內嵌圖片的郵件

前面的例子中是單獨的使用HTML或者是純文本內容,但是有時候我們需要在純文本中使用內嵌的方式顯示一些圖片,因此就要將純文本和內嵌圖片單獨存放在MimeBodyPart中然后再將其存放在一個Mimemultipart對象中即可。

import com.sun.mail.util.MailSSLSocketFactory;import javax.activation.DataHandler;import javax.activation.FileDataSource;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.Properties;public class SendImageEmail { public static void main(String[] args) throws Exception { Properties prop = new Properties(); prop.setProperty('mail.host', 'smtp.qq.com'); //// 設置QQ郵件服務器 prop.setProperty('mail.transport.protocol', 'smtp'); // 郵件發送協議 prop.setProperty('mail.smtp.auth', 'true'); // 需要驗證用戶名密碼 // 關于QQ郵箱,還要設置SSL加密,加上以下代碼即可 MailSSLSocketFactory sf = new MailSSLSocketFactory(); sf.setTrustAllHosts(true); prop.put('mail.smtp.ssl.enable', 'true'); prop.put('mail.smtp.ssl.socketFactory', sf); //使用JavaMail發送郵件的5個步驟 //1、創建定義整個應用程序所需的環境信息的 Session 對象 Session session = Session.getDefaultInstance(prop, new Authenticator() { public PasswordAuthentication getPasswordAuthentication() { //發件人郵件用戶名、授權碼 return new PasswordAuthentication('545646733@qq.com', '授權碼'); } }); //開啟Session的debug模式,這樣就可以查看到程序發送Email的運行狀態 session.setDebug(true); //2、通過session得到transport對象 Transport ts = session.getTransport(); //3、使用郵箱的用戶名和授權碼連上郵件服務器 ts.connect('smtp.qq.com', '545646733@qq.com', '授權碼'); //4、創建郵件 //創建郵件 MimeMessage message = new MimeMessage(session); // 設置郵件的基本信息 //發件人 message.setFrom(new InternetAddress('545646733@qq.com')); //收件人 message.setRecipient(Message.RecipientType.TO, new InternetAddress('545646733@qq.com')); //郵件標題 message.setSubject('帶圖片的郵件'); // 準備郵件數據 // 準備圖片數據 MimeBodyPart image = new MimeBodyPart(); DataHandler dh = new DataHandler(new FileDataSource('src/resources/bz.jpg')); image.setDataHandler(dh); image.setContentID('bz.jpg'); // 準備正文數據 MimeBodyPart text = new MimeBodyPart(); text.setContent('這是一封郵件正文帶圖片<img src=’cid:bz.jpg’>的郵件', 'text/html;charset=UTF-8'); // 描述數據關系 MimeMultipart mm = new MimeMultipart(); mm.addBodyPart(text); mm.addBodyPart(image); mm.setSubType('related'); //設置到消息中,保存修改 message.setContent(mm); message.saveChanges(); //5.發送郵件 ts.sendMessage(message, message.getAllRecipients()); ts.close(); }}

3.2.2 帶圖片和附件的復雜郵件發送

import javax.activation.DataHandler;import javax.activation.FileDataSource;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.security.GeneralSecurityException;import java.util.Properties;public class SendFileMail { public static void main(String[] args) throws MessagingException, GeneralSecurityException { //創建一個配置文件保存并讀取信息 Properties properties = new Properties(); //設置qq郵件服務器 properties.setProperty('mail.host','smtp.qq.com'); //設置發送的協議 properties.setProperty('mail.transport.protocol','smtp'); //設置用戶是否需要驗證 properties.setProperty('mail.smtp.auth', 'true'); //=================================只有QQ存在的一個特性,需要建立一個安全的鏈接 // 關于QQ郵箱,還要設置SSL加密,加上以下代碼即可 MailSSLSocketFactory sf = new MailSSLSocketFactory(); sf.setTrustAllHosts(true); properties.put('mail.smtp.ssl.enable', 'true'); properties.put('mail.smtp.ssl.socketFactory', sf); //=================================準備工作完畢 //1.創建一個session會話對象; Session session = Session.getDefaultInstance(properties, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication('545646733@qq.com', '授權碼'); } }); //可以通過session開啟Dubug模式,查看所有的過程 session.setDebug(true); //2.獲取連接對象,通過session對象獲得Transport,需要捕獲或者拋出異常; Transport tp = session.getTransport(); //3.連接服務器,需要拋出異常; tp.connect('smtp.qq.com','545646733@qq.com','授權碼'); //4.連接上之后我們需要發送郵件; MimeMessage mimeMessage = imageMail(session); //5.發送郵件 tp.sendMessage(mimeMessage,mimeMessage.getAllRecipients()); //6.關閉連接 tp.close(); } public static MimeMessage imageMail(Session session) throws MessagingException { //消息的固定信息 MimeMessage mimeMessage = new MimeMessage(session); //郵件發送人 mimeMessage.setFrom(new InternetAddress('545646733@qq.com')); //郵件接收人,可以同時發送給很多人,我們這里只發給自己; mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress('545646733@qq.com')); mimeMessage.setSubject('我也不知道是個什么東西就發給你了'); //郵件主題 /* 編寫郵件內容 1.圖片 2.附件 3.文本 */ //圖片 MimeBodyPart body1 = new MimeBodyPart(); body1.setDataHandler(new DataHandler(new FileDataSource('src/resources/yhbxb.png'))); body1.setContentID('yhbxb.png'); //圖片設置ID //文本 MimeBodyPart body2 = new MimeBodyPart(); body2.setContent('請注意,我不是廣告<img src=’cid:yhbxb.png’>','text/html;charset=utf-8'); //附件 MimeBodyPart body3 = new MimeBodyPart(); body3.setDataHandler(new DataHandler(new FileDataSource('src/resources/log4j.properties'))); body3.setFileName('log4j.properties'); //附件設置名字 MimeBodyPart body4 = new MimeBodyPart(); body4.setDataHandler(new DataHandler(new FileDataSource('src/resources/1.txt'))); body4.setFileName(''); //附件設置名字 //拼裝郵件正文內容 MimeMultipart multipart1 = new MimeMultipart(); multipart1.addBodyPart(body1); multipart1.addBodyPart(body2); multipart1.setSubType('related'); //1.文本和圖片內嵌成功! //new MimeBodyPart().setContent(multipart1); //將拼裝好的正文內容設置為主體 MimeBodyPart contentText = new MimeBodyPart(); contentText.setContent(multipart1); //拼接附件 MimeMultipart allFile =new MimeMultipart(); allFile.addBodyPart(body3); //附件 allFile.addBodyPart(body4); //附件 allFile.addBodyPart(contentText);//正文 allFile.setSubType('mixed'); //正文和附件都存在郵件中,所有類型設置為mixed; //放到Message消息中 mimeMessage.setContent(allFile); mimeMessage.saveChanges();//保存修改 return mimeMessage; }}

至此所有的郵件功能均已實現

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美日韩一区二区三区四区在线观看| 欧美亚洲三区| 精品美女视频| 日本欧美不卡| 婷婷综合在线| 综合色就爱涩涩涩综合婷婷| 日韩精品五月天| 精品久久网站| 亚洲一区二区毛片| 日本不卡一区二区三区| 国模精品一区| 一区二区国产在线| 欧美在线日韩| 久久99久久久精品欧美| 久久一区国产| 精品久久久久中文字幕小说| 精品入口麻豆88视频| 亚洲www免费| 国产一级久久| 日韩成人一级| 国产66精品| 蜜臀国产一区二区三区在线播放| 婷婷成人av| а√天堂8资源中文在线| 国内精品福利| 国产亚洲一区| 日本黄色精品| 在线国产日韩| 日韩欧美在线中字| 亚洲综合色婷婷在线观看| 日韩国产在线不卡视频| 在线精品亚洲欧美日韩国产| 日韩精品一卡二卡三卡四卡无卡| 国产精品免费大片| 在线成人直播| 久久精品色播| 国产精品人人爽人人做我的可爱| 精品免费在线| 亚洲aⅴ网站| 伊人精品一区| 久久夜夜操妹子| 国产一区三区在线播放| 国产精品久久久久久久久久齐齐| 日韩影院在线观看| 日韩毛片一区| 一级欧美视频| 尤物精品在线| 亚洲精品免费观看| 日韩中文字幕一区二区高清99| 亚洲精品极品| 国产欧美日本| 国产三级精品三级在线观看国产| 天堂成人国产精品一区| 五月天激情综合网| av亚洲免费| 国产精品一区二区三区美女 | 欧美激情视频一区二区三区免费| 中文视频一区| 亚洲人亚洲人色久| 蜜臀av一区二区三区| 老牛影视一区二区三区| 亚洲黄色在线| 日韩中文字幕一区二区三区| 日韩影院免费视频| 亚洲激情社区| 国产一区二区久久久久| 日韩在线观看不卡| 午夜视频精品| 欧美一区免费| 日本免费久久| 麻豆国产精品一区二区三区| 亚洲欧美日韩高清在线| 日韩午夜视频在线| 天海翼亚洲一区二区三区| 国产探花在线精品| 亚洲黄色中文字幕| 免费日本视频一区| 美女久久精品| 免费av一区二区三区四区| 水蜜桃久久夜色精品一区的特点| 日韩精品三级| 亚洲伦乱视频| 视频一区日韩精品| 美女在线视频一区| 亚洲免费观看| 精品一区二区三区在线观看视频| 神马日本精品| 国产亚洲欧美日韩精品一区二区三区| 成人在线免费观看网站| 免费中文字幕日韩欧美| 国产不卡一区| 日韩精品一区二区三区中文| 88xx成人免费观看视频库| 欧美综合精品| 国内精品伊人| 日本综合视频| 久久亚洲精品中文字幕蜜潮电影| 久久不见久久见国语| 成人日韩av| 亚洲精品进入| 国产精品中文字幕制服诱惑| 国产精品对白| 欧美福利在线| 国产欧美自拍| 欧洲av不卡| 天堂精品久久久久| 欧美日韩精品免费观看视欧美高清免费大片 | 视频一区中文字幕| 久久久久九九精品影院| 97欧美在线视频| 日韩一区欧美二区| 97视频热人人精品免费| 综合激情一区| 久久久精品午夜少妇| 国产精品片aa在线观看| 蜜桃av一区| 欧美亚洲国产激情| 激情综合婷婷| 日本少妇一区二区| 国产美女一区| 久久久久久久久丰满| 久久丁香四色| 国产美女久久| 青青草精品视频| 婷婷综合网站| 99精品美女| 久久九九精品| 日韩欧美少妇| 91久久久精品国产| 国产毛片久久| 婷婷综合一区| 国产精品亚洲产品| 国产午夜精品一区在线观看| 91精品丝袜国产高跟在线| 天堂av一区| 国产精品免费99久久久| 免费一级欧美片在线观看网站| 精品三区视频| 免费污视频在线一区| 伊人久久大香线蕉av不卡| 免费精品国产的网站免费观看| 免费久久精品| 日韩 欧美一区二区三区| 国产精品一区二区中文字幕| 麻豆视频一区| 麻豆精品国产91久久久久久| 国产视频一区二| 精品国产午夜| 久久精品欧洲| 久久91导航| www在线观看黄色| 午夜日韩在线| 亚洲永久精品唐人导航网址| 亚洲综合欧美| 亚洲欧美日韩国产综合精品二区| 美女国产一区二区三区| 久久久久伊人| 日韩在线高清| 亚洲一卡久久| 日韩一区二区三区免费视频| 91亚洲精品视频在线观看| 欧美国产先锋| 在线亚洲激情| 日韩国产欧美视频| 国产一区二区三区久久| 老鸭窝毛片一区二区三区| 色8久久久久| 成午夜精品一区二区三区软件| 99成人在线| 蜜桃久久av| 美女精品视频在线| 婷婷色综合网| 国产精品流白浆在线观看| 麻豆国产在线| 亚洲有吗中文字幕| 麻豆高清免费国产一区| 成人日韩在线观看| 免播放器亚洲一区| 国产在线不卡一区二区三区 | 日韩大片在线播放| 亚洲三级精品| 国精品产品一区| 亚洲精品欧洲| 久久超级碰碰| 免费在线成人网| 日韩欧美综合| 欧美综合社区国产| 日韩视频久久| 日韩激情一区| 国产精品v一区二区三区| 亚洲精品小说| 国产夫妻在线| 国产精品天堂蜜av在线播放| re久久精品视频| 欧美激情国产在线| 日韩美女国产精品| 欧美高清不卡| 国产v日韩v欧美v| 亚洲狼人精品一区二区三区| 在线日韩av|