java Mail

電子郵件的應(yīng)用非常廣泛,例如在某網(wǎng)站注冊了一個賬戶胧后,自動發(fā)送一封歡迎郵件芋浮,通過郵件找回密碼,自動批量發(fā)送活動信息等壳快。但這些應(yīng)用不可能和我們自己平時發(fā)郵件一樣纸巷,先打開瀏覽器,登錄郵箱濒憋,創(chuàng)建郵件再發(fā)送何暇。本文將簡單介紹如何通過 Java 代碼來創(chuàng)建電子郵件,并連接郵件服務(wù)器發(fā)送郵件凛驮。

現(xiàn)在裆站,我們來先來了解一下電子郵件協(xié)議SMTP 是 Simple Mail Transfer Protocol 的簡稱,即簡單郵件傳輸協(xié)議黔夭。電子郵件的在網(wǎng)絡(luò)中傳輸和網(wǎng)頁一樣需要遵從特定的協(xié)議宏胯,常用的電子郵件協(xié)議包括 SMTP,POP3本姥,IMAP肩袍。其中郵件的創(chuàng)建和發(fā)送只需要用到 SMTP協(xié)議,所以本文也只會涉及到SMTP協(xié)議婚惫。

我們再來了解一下開發(fā)javamail程序必備的jar包——javax.mail.jar氛赐,Java 官方提供了對電子郵件協(xié)議封裝的 Java 類庫,就是JavaMail先舷,但并沒有包含到標(biāo)準(zhǔn)的 JDK 中艰管,需要我們自己去下載。

JavaMail 下載地址:https://github.com/javaee/javamail/releases


下載javamail頁面截圖

jar包下載好后蒋川,我們還需要有一個郵箱賬號去發(fā)送牲芋,這里我們選用163郵箱為例子,郵箱賬號必須要開啟 SMTP 服務(wù),在瀏覽器網(wǎng)頁登錄郵箱后一般在郵箱的“設(shè)置”選項中可以開啟缸浦,并記下郵箱的 SMTP 服務(wù)器地址


163郵箱設(shè)置截圖

下面我們就開始寫java程序了夕冲。

首先創(chuàng)建一個 Java 工程,把下載好的javax.mail.jar作為類庫加入工程裂逐。

下面介紹javaMail發(fā)送簡單文本的實例:

package com.xx.javaMaildome;

import java.util.Date;

import java.util.Properties;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeMessage;

public class Mail {

public static String myEmailAccount="*************@163.com";//我的賬號

public static String myEmailPassword="***********";//賬號密碼

public static String myEmailSMTPHost="smtp.163.com";//發(fā)件人郵箱的 SMTP 服務(wù)器地址

public static String receiveMailAccount="***********@qq.com";//收件人郵箱

public static void main(String[] args)throws Exception

{

//1.創(chuàng)建參數(shù)配置歹鱼,用于連接郵件服務(wù)器的參數(shù)配置

Properties properties=new Properties();

properties.setProperty("mail.transport.protocol", "smtp");//使用的協(xié)議(JavaMail規(guī)范要求)

properties.setProperty("mail.smtp.host", myEmailSMTPHost);//發(fā)件人的郵箱的 SMTP 服務(wù)器地址

properties.setProperty("mail.smtp.auth", "true");//需要請求認(rèn)證

// 2. 根據(jù)配置創(chuàng)建會話對象, 用于和郵件服務(wù)器交互

Session session=Session.getInstance(properties);

session.setDebug(true);//設(shè)置為debug模式,可以查看詳細(xì)的發(fā)送log

//3.創(chuàng)建一封郵件

MimeMessage message=createMimeMessage(session, myEmailAccount, receiveMailAccount);

//4.根據(jù)session獲取郵件傳輸對象

Transport transport=session.getTransport();

transport.connect(myEmailAccount, myEmailPassword);

transport.sendMessage(message,message.getAllRecipients());

transport.close();//關(guān)閉連接

System.out.println("郵件發(fā)送成功");

}

/**

* 創(chuàng)建一封只包含文本的簡單郵件

*

* @param session 和服務(wù)器交互的會話

* @param sendMail 發(fā)件人郵箱

* @param receiveMail 收件人郵箱

* @return

* @throws Exception

*/

private static MimeMessage createMimeMessage(Session session, String sendMail, String receiveMail)throws Exception {

// TODO Auto-generated method stub

MimeMessage message=new MimeMessage(session);//創(chuàng)建一封郵件

message.setFrom(new InternetAddress(sendMail, "郵件", "UTF-8"));//發(fā)件人

message.setRecipient(MimeMessage.RecipientType.TO,new InternetAddress(receiveMail, "Mary", "UTF-8"));//收件人

message.setSubject("解釋","UTF-8");//郵件主題

message.setContent("這是用程序發(fā)送的郵件哦卜高,不是在客戶端上寫的", "text/html;charset=utf-8");

message.setSentDate(new Date());

message.saveChanges();//保存設(shè)置

return message;}

}

以上就是發(fā)送javaMail發(fā)送簡單文本的實例醉冤,在發(fā)送的過程中,出現(xiàn)問題的不是代碼出錯篙悯,而是郵件被作為垃圾郵件發(fā)布出去,被163的服務(wù)器攔截掉铃绒。然后就出現(xiàn)以下錯誤:


錯誤截圖

錯誤參考:http://mail.163.com/help/help_spam_16.htmip=221.224.54.186&hostid=smtp14&time=1512436245

解決辦法:修改你發(fā)送的內(nèi)容鸽照,比如我上面的內(nèi)容,經(jīng)過測試是可以發(fā)送成功的颠悬。

至此矮燎,簡單的javaMail發(fā)送文本文件就完成了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末赔癌,一起剝皮案震驚了整個濱河市诞外,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌灾票,老刑警劉巖峡谊,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異刊苍,居然都是意外死亡既们,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進(jìn)店門正什,熙熙樓的掌柜王于貴愁眉苦臉地迎上來啥纸,“玉大人,你說我怎么就攤上這事婴氮∷拱簦” “怎么了?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵主经,是天一觀的道長荣暮。 經(jīng)常有香客問我,道長旨怠,這世上最難降的妖魔是什么渠驼? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上迷扇,老公的妹妹穿的比我還像新娘百揭。我一直安慰自己,他們只是感情好蜓席,可當(dāng)我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布器一。 她就那樣靜靜地躺著,像睡著了一般厨内。 火紅的嫁衣襯著肌膚如雪祈秕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天雏胃,我揣著相機(jī)與錄音请毛,去河邊找鬼。 笑死瞭亮,一個胖子當(dāng)著我的面吹牛方仿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播统翩,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼仙蚜,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了厂汗?” 一聲冷哼從身側(cè)響起委粉,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎娶桦,沒想到半個月后贾节,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡趟紊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年氮双,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片霎匈。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡戴差,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出铛嘱,到底是詐尸還是另有隱情暖释,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布墨吓,位于F島的核電站球匕,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏帖烘。R本人自食惡果不足惜亮曹,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧照卦,春花似錦式矫、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至瞬痘,卻和暖如春故慈,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背框全。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工察绷, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人津辩。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓克婶,卻偏偏與公主長得像,于是被迫代替她去往敵國和親丹泉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 本文包括:1鸭蛙、名詞解釋2摹恨、郵件收發(fā)過程3、JavaMail 知識概要4娶视、發(fā)送一封符合 MIME 協(xié)議的 JavaM...
    廖少少閱讀 4,031評論 2 13
  • 最近在做郵件發(fā)送的功能晒哄,發(fā)現(xiàn)163郵箱老是無法發(fā)送成功,報端口錯誤肪获,所以把下面的配置記錄下來寝凌,以供大家參考。 16...
    小徐2016閱讀 3,853評論 0 2
  • Java Mail 簡介 常見的郵件協(xié)議包括:SMTP(Simple Mail Transfer Protocol...
    Josaber閱讀 3,279評論 1 9
  • ``` public class MailU { public static void sendMail(Stri...
    尼爾君閱讀 254評論 0 0
  • 概述 郵件相關(guān)的標(biāo)準(zhǔn) 廠商所提供的 JavaMail 服務(wù)程序可以有選擇地實現(xiàn)某些郵件協(xié)議孝赫,常見的郵件協(xié)議包括: ...
    靜默虛空閱讀 2,159評論 -1 4