數(shù)年前,郵件的發(fā)送是經(jīng)過人為的運(yùn)輸,從發(fā)件人---當(dāng)?shù)剜]局---收件地郵局---收件人,付出的人力物力是非常大的。隨著時(shí)代的進(jìn)步,科技的發(fā)展,如今我們的生活中出現(xiàn)更高級(jí)發(fā)送郵件的方式,最常用的就是從(郵箱--郵箱),當(dāng)然中間會(huì)經(jīng)過多個(gè)郵箱服務(wù)器的轉(zhuǎn)載,稱為電子郵箱。此篇文章的內(nèi)容就是簡(jiǎn)單的通過java程序發(fā)送郵件。
成都創(chuàng)新互聯(lián)專注于伊美網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供伊美營銷型網(wǎng)站建設(shè),伊美網(wǎng)站制作、伊美網(wǎng)頁設(shè)計(jì)、伊美網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務(wù),打造伊美網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供伊美網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。1.首先我們先了解郵件的協(xié)議POP3
POP3是Post?Office?Protocol?3的簡(jiǎn)稱,即郵局協(xié)議的第3個(gè)版本,它規(guī)定怎樣將個(gè)人計(jì)算機(jī)連接到Internet的郵件服務(wù)器和下載電子郵件的電子協(xié)議。它是因特網(wǎng)電子郵件的第一個(gè)離線協(xié)議標(biāo)準(zhǔn),POP3允許用戶從服務(wù)器上把郵件存儲(chǔ)到本地主機(jī)(即自己的計(jì)算機(jī))上,同時(shí)刪除保存在郵件服務(wù)器上的郵件,而POP3服務(wù)器則是遵循POP3協(xié)議的接收郵件服務(wù)器,用來接收電子郵件的。
SMTP
SMTP?的全稱是?“?Simple?Mail?Transfer?Protocoli,即簡(jiǎn)單郵件傳輸協(xié)議。它是一組用于從源地址到目的地址傳輸郵件的規(guī)范,通過它來控制郵件的中轉(zhuǎn)方式。SMTP?協(xié)議屬于?TCP/IP?協(xié)議族,它幫助每臺(tái)計(jì)算機(jī)在發(fā)送或中轉(zhuǎn)信件時(shí)找到下一?個(gè)目的地。SMTP?服務(wù)器就是遵循?SMTP?協(xié)議的發(fā)送郵件服務(wù)器。SMTP?認(rèn)證,簡(jiǎn)單地說就是要求必須在提供了賬戶名和密碼之后才可登錄?SMTP?服務(wù)器,這就使得那些垃圾郵件散播者無可乘之機(jī)。增加?SMTP?認(rèn)證的目的是為了使用戶避免受到垃圾郵件的侵?jǐn)_。
IMAP
IMAP全稱是Internet?Mail?Access?Protocol,?即交互式郵件存取協(xié)議,它是跟POP3類似郵件訪問標(biāo)準(zhǔn)協(xié)議之間不同的是,開啟了IMAP后,您在電子郵件客戶端收取的郵件仍然保留在服務(wù)器上,同時(shí)在客戶端上的操作都會(huì)反饋到服務(wù)器上,如:刪除郵件,標(biāo)記已讀等,服務(wù)器上的郵件也會(huì)做相應(yīng)的動(dòng)作。所以無論從瀏覽器登錄郵箱或者客戶端?軟件登錄郵箱,看到的郵件以及狀態(tài)都是
一致的。
IMAP和POP3有什么區(qū)別?
POP3協(xié)議介許電子郵件客戶端下載服務(wù)器上的郵件,但是在客戶端的操作?(如移動(dòng)郵件、標(biāo)記已讀等),不會(huì)反饋到服務(wù)器上,比如通過客戶端收取了郵箱中的3封郵件并移動(dòng)到其他文件夾,郵箱服務(wù)器上的這些郵件是沒有同時(shí)被移動(dòng)的。
IMAP提供webmail?與電子郵件客戶端之間的雙向通信,客戶端的操作都會(huì)反饋到服務(wù)器上,對(duì)郵件進(jìn)行的操作,服務(wù)器上的郵件也會(huì)做相應(yīng)的動(dòng)作。
當(dāng)我們了解了郵件協(xié)議后,接下來準(zhǔn)備發(fā)送一個(gè)簡(jiǎn)單的郵件、
1.創(chuàng)建Session,準(zhǔn)備STMP登錄的信息
(1).創(chuàng)建STMP地址(以126郵箱為例)
(2).設(shè)置發(fā)件人的帳號(hào)和密碼(使用授權(quán)密碼,可在126郵箱中設(shè)置,當(dāng)不需要使用時(shí),刪除設(shè)備即可)
(3).連接到SMTP服務(wù)器(須先創(chuàng)建Proerties對(duì)象),調(diào)用put()方法添加SMTO主機(jī)名,主機(jī)端口號(hào),是否需要用戶認(rèn)證,啟用TLS加密。
(4).創(chuàng)建Session,調(diào)用getInstance()方法,傳入SMTP服務(wù)器連接信息和Authenticator接口的匿名類,并重寫PAsswordAuthentication()方法,傳入登陸用戶名和登陸密碼(授權(quán)密碼)。
(5).設(shè)置debug模式便于調(diào)式。實(shí)現(xiàn)代碼如下。
(6).我們將信息封裝在一個(gè)方法中,使用時(shí)直接調(diào)用即可。具體實(shí)現(xiàn)如下。
2.創(chuàng)建Session對(duì)話
(1). 創(chuàng)建郵件對(duì)象 ,MimeMessage對(duì)象,調(diào)用setFrom()方法,傳入發(fā)件人的賬戶名稱
(2).調(diào)用setFecipient()方法,設(shè)置收件類型RecipientType.TO(收件)/RecipientType.CC(抄送),并傳入收件人郵箱賬戶名稱,注:如果需要同時(shí)發(fā)送給收件人并抄送其它收件人,需要調(diào)用
setFecipients()方法,創(chuàng)建new InternetAddress[],再讓抄送人的地址傳入,當(dāng)然,此時(shí)的收件類型是RecipientType.CC。
(3).接下來設(shè)置郵件標(biāo)題,調(diào)用setSubject()方法,傳入標(biāo)題,并設(shè)置字符編碼。
(4).調(diào)用setText()方法,輸入正文內(nèi)容,如果正文內(nèi)容有Html標(biāo)簽,如::則需要傳參數(shù)"html".
(5).如果需要發(fā)送帶有附件的郵件,需要?jiǎng)?chuàng)建Multipart的對(duì)象,來進(jìn)行附件的復(fù)合,在創(chuàng)建BodyPart對(duì)象,調(diào)用setFileName()方法,設(shè)置附件文件的名稱設(shè)置,之后調(diào)用serDataHandler()方法,傳入字節(jié)數(shù)組,再通過Files工具類的readAllbytes方法讀取傳入的本地圖片,文件路徑使用Paths工具類的get()方法獲得。最后調(diào)用setContent()方法將附加加入郵件內(nèi)容。
(6).如果要讓發(fā)送的附件內(nèi)容顯示在正文,則需要再郵件附件部分通過BodyPart對(duì)象的setHeader()方法,設(shè)置名稱,之后再正文部分添加名稱。
(7).最后使用Transport的send()方法發(fā)送郵件。代碼如下。
如上所述,一個(gè)簡(jiǎn)單的郵件就發(fā)送好了。
有不足之處,還希望各位大佬指點(diǎn)。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧