java web 邮件_Java Web(十二) JavaMail发送邮件
發(fā)送郵件的原理
概敘
郵件服務(wù)器:
要在 Internet 上提供電子郵件功能,必須有專門的電子郵件服務(wù)器。例如現(xiàn)在 Internet 很多 提供郵件服務(wù)的廠商:sina、sohu、163 等等他們都有自己的郵件服務(wù)器。
這些服務(wù)器類似于現(xiàn)實(shí)生活中的郵局,它主要負(fù)責(zé)接收用戶投遞過來的郵件,并把郵件投 遞到郵件接收者的電子郵箱中。
郵件服務(wù)器,按照提供的服務(wù)類型,可以分為發(fā)送郵件的服務(wù)器和接收郵件的服務(wù)器。
電子郵箱:
電子郵箱(E-mail 地址)的獲得需要在郵件服務(wù)器上進(jìn)行申請,確切地說,電子郵箱其實(shí)就是用戶在郵件服務(wù)器上申請的一個(gè)帳戶。用戶在郵件服務(wù)器上申請了一個(gè)帳號(hào)后,郵件服務(wù)器就會(huì)為這個(gè)帳號(hào)分配一定的空間,用戶從而可以使用這個(gè)帳號(hào)以及空間,發(fā)送和接收電子郵件。
郵件協(xié)議
SMTP 協(xié)議-發(fā)郵件協(xié)議
全稱為 Simple Mail Transfer Protocol(簡單郵件傳輸協(xié)議),它定義了郵件客戶端軟件與 SMTP 服務(wù)器之間、以及兩臺(tái) SMTP 服務(wù)器之間的通訊規(guī)則。
端口號(hào):25。
POP3 協(xié)議-收郵件協(xié)議
全稱為 Post Office Protocol(郵局協(xié)議),它定義了郵件客戶端軟件與 POP3 服務(wù)器的通訊規(guī)則。
端口號(hào):110。
發(fā)送郵件流程
JavaMail
JavaMail是提供給開發(fā)者處理電子郵件相關(guān)的編程接口。它是Sun發(fā)布的用來處理email的API。它可以方便地執(zhí)行一些常用的郵件傳輸。
使用JavaMail需要導(dǎo)入兩個(gè)jar包,mail.jar、activation.jar。
使用qq郵箱發(fā)送郵件
使用qq郵箱發(fā)送郵件必須聯(lián)網(wǎng),否則無效。
package com.kindleheart.store.utils;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.Message.RecipientType;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class MailTest {
public static void main(String[] args) throws MessagingException {
//服務(wù)器的設(shè)置
Properties props = new Properties();
props.setProperty("mail.host", "smtp.qq.com");//設(shè)置服務(wù)器地址
props.setProperty("mail.smtp.auth", "true");//驗(yàn)證
//郵箱帳號(hào)密碼
Authenticator authenticator = new Authenticator() {
@Override
public PasswordAuthentication getPasswordAuthentication() {
//必須使用授權(quán)碼,而不是密碼,去qq郵箱申請
return new PasswordAuthentication("873268974@qq.com","授權(quán)碼");
}
};
//1、與服務(wù)器建立連接:Session
Session session = Session.getDefaultInstance(props, authenticator);
//2、編寫郵件:Message
Message message = new MimeMessage(session);
//2.1、發(fā)件人
message.setFrom(new InternetAddress("873268974@qq.com"));
//2.2、收件人 , to:收件人、cc :抄送、bcc:暗送(密送)。
message.setRecipient(RecipientType.TO, new InternetAddress("kindleheart@qq.com"));
//2.3、主題
message.setSubject("測試");
//2.4、正文
String str = "哈哈,我發(fā)送了";
message.setContent(str, "text/html;charset=UTF-8");
//3、發(fā)送
Transport.send(message);
}
}
使用本地郵箱服務(wù)器和客戶端發(fā)送郵件
在沒有聯(lián)網(wǎng)的情況下可以使用該方法在自己的電腦上發(fā)送和接收郵件,可以用于測試項(xiàng)目。
搭載本地環(huán)境
安裝郵件服務(wù)器(易郵郵件服務(wù)器)
雙擊安裝包,進(jìn)行配置
設(shè)置域名
新建賬戶,新建aaa和bbb兩個(gè)賬戶,用于發(fā)送和接收郵件
安裝foxmail郵箱
雙擊安裝包,進(jìn)行配置
我們剛剛在MailServer中創(chuàng)建了aaa,bbb兩個(gè)賬戶,現(xiàn)在在foxmail郵箱中登入這兩個(gè)賬戶
指定本地的郵件服務(wù)器
使用JavaMail在本地發(fā)送接受郵件
package com.kindleheart.store.utils;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.Message.RecipientType;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class MailTest {
public static void main(String[] args) throws MessagingException {
//服務(wù)器的設(shè)置
Properties props = new Properties();
props.setProperty("mail.host", "localhost");//設(shè)置服務(wù)器地址
props.setProperty("mail.smtp.auth", "true");//權(quán)限驗(yàn)證
//郵箱帳號(hào)密碼
Authenticator authenticator = new Authenticator() {
@Override
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("aaa@store.com","123");
}
};
//1、與服務(wù)器建立連接:Session
Session session = Session.getDefaultInstance(props, authenticator);
//2、編寫郵件:Message
Message message = new MimeMessage(session);
//2.1、發(fā)件人
message.setFrom(new InternetAddress("aaa@store.com"));
//2.2、收件人 , to:收件人、cc :抄送、bcc:暗送(密送)。
message.setRecipient(RecipientType.TO, new InternetAddress("bbb@store.com"));
//2.3、主題
message.setSubject("測試");
//2.4、正文
String str = "哈哈,我發(fā)送了";
message.setContent(str, "text/html;charset=UTF-8");
//3、發(fā)送
Transport.send(message);
}
}
在foxmail郵箱中查看是否發(fā)送成功
總結(jié)
以上是生活随笔為你收集整理的java web 邮件_Java Web(十二) JavaMail发送邮件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 配置邮件服务器sendman,java邮
- 下一篇: 十六、邮件发送 --【转发】本地安装易邮