java發(fā)送郵件示例講解
本文實例講解了java發(fā)郵件的詳細(xì)過程,供大家參考,具體內(nèi)容如下
1、郵件協(xié)議
發(fā)郵件的:SMTP (Simple Mail Transport Protocal)
收郵件的協(xié)議:pop3 (Post Office Protocal 3)
IMAP 新協(xié)議 發(fā)郵件也可以收郵件。
(一步步的與服務(wù)器交互)
SMTP :

2、收發(fā)郵件的過程:
一般情況下,smtp和pop3是兩個服務(wù)器(主機)。
Smtp郵件的端口為25。
POP3 端口 為110。
發(fā)郵件示例
1)、安裝foxmail:

2)、發(fā)郵件時,要對用戶名和密碼進行base64編碼
//對用戶名和密碼進行base64編碼
@Test
public void base64(){
String name = "wj_leaf12345";
String pwd = "1qaz2wsx";
BASE64Encoder en = new BASE64Encoder();
name = en.encode(name.getBytes());
pwd = en.encode(pwd.getBytes());
System.err.println(name);
System.err.println(pwd);
}
3)、通過java代碼發(fā)郵件
用java發(fā)郵件,必須要導(dǎo)入新的包
mail.jar – 發(fā)郵件的核心包
activation.jar – 對用戶和密碼加密.
在mail.jar中有三個核心類:
Javax.mail.Session – 是指與郵件服務(wù)器會話。整個項目中只要一個就可以了.
Javax.mail.Message(接口) —準(zhǔn)備發(fā)送數(shù)據(jù)信息。
MimeMessage - 可以設(shè)置類型的數(shù)據(jù)信息。
Transport – 它擁有一個方法可以發(fā)送Message。
第一步:導(dǎo)入兩個jar包
第二步:發(fā)簡單的郵件
public void sendMail() throws Exception{
//第一步:聲明properties對象放信息
Properties prop = new Properties();
//設(shè)置連接哪一臺服務(wù)器
prop.setProperty("mail.host","smtp.126.com");
//設(shè)置是否驗證
prop.setProperty("mail.smtp.auth", "true");
//第二步:聲明用戶名和密碼
Authenticator auth = new Authenticator() {
//此訪求返回用戶和密碼的對象
public PasswordAuthentication getPasswordAuthentication() {
PasswordAuthentication pa =
new PasswordAuthentication("aaa", "sss");
return pa;
}
};
////第二步:獲取Session對象
Session session =
Session.getDefaultInstance(prop,auth);
//設(shè)置session的調(diào)試模式
session.setDebug(true);
//第三步:聲明信息
MimeMessage mm1 =
new MimeMessage(session);
//第四步:設(shè)置發(fā)件人email
Address from = new InternetAddress("wj@126.com");
mm1.setFrom(from);
//第五步:設(shè)置收件人
mm1.setRecipient(RecipientType.TO,new InternetAddress("wj@163.com"));
mm1.setRecipient(RecipientType.CC, new InternetAddress("554@qq.com"));
mm1.setRecipient(RecipientType.BCC, new InternetAddress("wj@ss.cn"));
//第六步:設(shè)置主題
mm1.setSubject("這是用Java發(fā)的郵件3");
mm1.setContent("你好,這是用java發(fā)的郵件,3333再試一下", "text/plain;charset=UTF-8");
//第七步:
Transport.send(mm1);
}
第三步:v發(fā)帶有超連接的郵件
mm1.setSubject("這是用Java發(fā)的郵件sfasdf3");
mm1.setContent("你好,這是用java發(fā)的郵件,<a text/html;charset=UTF-8" );
//第七步:
Transport.send(mm1);
第四步:符件的郵件
public void sendFile() throws Exception{
Properties p = new Properties();
p.setProperty("mail.host","smtp.163.com");
p.setProperty("mail.smtp.auth","true");
Session s = Session.getDefaultInstance(p,new Authenticator() {
@Override
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("ww", "123");
}
});
s.setDebug(true);
//聲明MimeMessage
MimeMessage msg = new MimeMessage(s);
msg.setFrom(new InternetAddress("ww@163.com"));
msg.setRecipient(RecipientType.TO, new InternetAddress("ww@126.com"));
msg.setSubject("圖片的");
//第一步:聲明多處理的Part
MimeMultipart mm = new MimeMultipart();
//第二步:聲明
MimeBodyPart body1 = new MimeBodyPart();
//第三步:設(shè)置符件
DataSource ds = new FileDataSource(new File("./img/a.jpg"));
DataHandler dh = new DataHandler(ds);
body1.setDataHandler(dh);
//必須要設(shè)置名稱
body1.setFileName(MimeUtility.encodeText("美女.jpg"));
MimeBodyPart body2 = new MimeBodyPart();
//第三步:設(shè)置符件
DataSource ds2 = new FileDataSource(new File("./img/b.jpg"));
DataHandler dh2 = new DataHandler(ds2);
body2.setDataHandler(dh2);
//必須要設(shè)置名稱
body2.setFileName(MimeUtility.encodeText("美女2.jpg"));
MimeBodyPart body3 = new MimeBodyPart();
//第三步:設(shè)置符件
DataSource ds3 = new FileDataSource(new File("./img/m.mp3"));
DataHandler dh3 = new DataHandler(ds3);
body3.setDataHandler(dh3);
//必須要設(shè)置名稱
body3.setFileName(MimeUtility.encodeText("世紀(jì)末.mp3"));
//將body1添加到mm
mm.addBodyPart(body1);
mm.addBodyPart(body2);
mm.addBodyPart(body3);
msg.setContent(mm);
//發(fā)送
Transport.send(msg);
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助。
相關(guān)文章
Spring Boot集成mongodb數(shù)據(jù)庫過程解析
這篇文章主要介紹了Spring Boot集成mongodb數(shù)據(jù)庫過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-05-05
為了多次讀取ServletInputStream引發(fā)的一系列問題
這篇文章主要介紹了為了多次讀取ServletInputStream引發(fā)的一系列問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10
基于Gradle搭建Spring?5.3.13-release源碼閱讀環(huán)境的詳細(xì)流程
這篇文章主要介紹了基于Gradle搭建Spring?5.3.13-release源碼閱讀環(huán)境,首先安裝jdk、gradle等一系列必要操作,本文通過實例代碼相結(jié)合給大家講解的非常詳細(xì),需要的朋友可以參考下2022-04-04
Java中PriorityQueue實現(xiàn)最小堆和最大堆的用法
很多時候都會遇到PriorityQueue,本文主要介紹了Java中PriorityQueue實現(xiàn)最小堆和最大堆的用法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-06-06

