java web 邮件_Java Web(十二) JavaMail发送邮件
發(fā)送郵件的原理
概敘
郵件服務(wù)器:
要在 Internet 上提供電子郵件功能,必須有專(zhuān)門(mén)的電子郵件服務(wù)器。例如現(xiàn)在 Internet 很多 提供郵件服務(wù)的廠商:sina、sohu、163 等等他們都有自己的郵件服務(wù)器。
這些服務(wù)器類(lèi)似于現(xiàn)實(shí)生活中的郵局,它主要負(fù)責(zé)接收用戶(hù)投遞過(guò)來(lái)的郵件,并把郵件投 遞到郵件接收者的電子郵箱中。
郵件服務(wù)器,按照提供的服務(wù)類(lèi)型,可以分為發(fā)送郵件的服務(wù)器和接收郵件的服務(wù)器。
電子郵箱:
電子郵箱(E-mail 地址)的獲得需要在郵件服務(wù)器上進(jìn)行申請(qǐng),確切地說(shuō),電子郵箱其實(shí)就是用戶(hù)在郵件服務(wù)器上申請(qǐng)的一個(gè)帳戶(hù)。用戶(hù)在郵件服務(wù)器上申請(qǐng)了一個(gè)帳號(hào)后,郵件服務(wù)器就會(huì)為這個(gè)帳號(hào)分配一定的空間,用戶(hù)從而可以使用這個(gè)帳號(hào)以及空間,發(fā)送和接收電子郵件。
郵件協(xié)議
SMTP 協(xié)議-發(fā)郵件協(xié)議
全稱(chēng)為 Simple Mail Transfer Protocol(簡(jiǎn)單郵件傳輸協(xié)議),它定義了郵件客戶(hù)端軟件與 SMTP 服務(wù)器之間、以及兩臺(tái) SMTP 服務(wù)器之間的通訊規(guī)則。
端口號(hào):25。
POP3 協(xié)議-收郵件協(xié)議
全稱(chēng)為 Post Office Protocol(郵局協(xié)議),它定義了郵件客戶(hù)端軟件與 POP3 服務(wù)器的通訊規(guī)則。
端口號(hào):110。
發(fā)送郵件流程
JavaMail
JavaMail是提供給開(kāi)發(fā)者處理電子郵件相關(guān)的編程接口。它是Sun發(fā)布的用來(lái)處理email的API。它可以方便地執(zhí)行一些常用的郵件傳輸。
使用JavaMail需要導(dǎo)入兩個(gè)jar包,mail.jar、activation.jar。
使用qq郵箱發(fā)送郵件
使用qq郵箱發(fā)送郵件必須聯(lián)網(wǎng),否則無(wú)效。
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郵箱申請(qǐng)
return new PasswordAuthentication("873268974@qq.com","授權(quán)碼");
}
};
//1、與服務(wù)器建立連接:Session
Session session = Session.getDefaultInstance(props, authenticator);
//2、編寫(xiě)郵件: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("測(cè)試");
//2.4、正文
String str = "哈哈,我發(fā)送了";
message.setContent(str, "text/html;charset=UTF-8");
//3、發(fā)送
Transport.send(message);
}
}
使用本地郵箱服務(wù)器和客戶(hù)端發(fā)送郵件
在沒(méi)有聯(lián)網(wǎng)的情況下可以使用該方法在自己的電腦上發(fā)送和接收郵件,可以用于測(cè)試項(xiàng)目。
搭載本地環(huán)境
安裝郵件服務(wù)器(易郵郵件服務(wù)器)
雙擊安裝包,進(jìn)行配置
設(shè)置域名
新建賬戶(hù),新建aaa和bbb兩個(gè)賬戶(hù),用于發(fā)送和接收郵件
安裝foxmail郵箱
雙擊安裝包,進(jìn)行配置
我們剛剛在MailServer中創(chuàng)建了aaa,bbb兩個(gè)賬戶(hù),現(xiàn)在在foxmail郵箱中登入這兩個(gè)賬戶(hù)
指定本地的郵件服務(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、編寫(xiě)郵件: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("測(cè)試");
//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发送邮件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 配置邮件服务器sendman,java邮
- 下一篇: Java中的恒等于号怎么输入_Java-