最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Java實現(xiàn)收發(fā)電子郵件功能

 更新時間:2022年07月18日 09:58:16   作者:無解的黑眼圈  
Email就是電子郵件,我們平常使用的QQ郵箱,網(wǎng)易郵箱,F(xiàn)oxmail都是用來收發(fā)郵件的,利用Java程序也可以完成收發(fā)電子郵件的功能,本文就來為大家詳細(xì)講講實現(xiàn)步驟

前言

Email就是電子郵件,我們平常使用的QQ郵箱,網(wǎng)易郵箱,F(xiàn)oxmail都是用來收發(fā)郵件的,利用Java程序也可以完成收發(fā)電子郵件的功能。

傳統(tǒng)的郵件是通過郵局投遞,從一個郵局到另一個郵局,最終到達(dá)用戶的郵箱。電子郵件與之的發(fā)送過程是類似的。電子郵件是從用戶電腦的郵件軟件(例如:Outlook),發(fā)送到郵件服務(wù)器上,可能經(jīng)過若干個郵件服務(wù)器的中轉(zhuǎn),最終到達(dá)對方郵件服務(wù)器上,收件方就可以用軟件接收郵件。

我們把類似Outlook這樣的郵件軟件稱為MUA:Mail User Agent:意思是給用戶服務(wù)的郵件代理;

郵件服務(wù)器稱為MTA:Mail Transfer Agent:意思是郵件中轉(zhuǎn)的代理

最終到達(dá)的郵件服務(wù)器稱為MDA:Mail Delivery Agent:郵件到達(dá)的代理。

郵件一旦到達(dá)MDA,就不在動了。實際上,電子郵件通常就存儲在MDA服務(wù)器的硬盤上,然后等收件人通過軟件或者登錄瀏覽器查看郵件。

郵件協(xié)議

常見的郵件協(xié)議有:POP3,SMTP,IMAP

POP3:是Post Office Protocol 3 的簡稱,POP3允許用戶從服務(wù)器上把郵件存儲到本地主機(jī)即自己的計算機(jī))上,同時刪除保存在郵件服務(wù)器上的郵件。

SMTP:全稱是“Simple Mail Transfer Protocol”,即簡單郵件傳輸協(xié)議。它是一組用于從源地址到目的地址傳輸郵件的規(guī)范,通過它來控制郵件的中轉(zhuǎn)方式。SMTP協(xié)議屬于TCP/IP協(xié)議簇,幫助每臺計算機(jī)在發(fā)送或中轉(zhuǎn)信件時找到下一個目的地。

SMTP認(rèn)證,就是要求必須在提供了賬戶名和密碼之后才能登錄SMTP服務(wù)器,使得那些垃圾郵件的散播者無可乘之機(jī)。增加SMTP認(rèn)證的目的是為了使用戶避免受到垃圾郵件的侵?jǐn)_。

IMAP:全稱是Internet Mail Access Protocol,即交互式郵件存取協(xié)議,它是跟POP3類似郵件訪問標(biāo)準(zhǔn)協(xié)議之一。不同的是,開啟了IMAP后,您在電子郵件客戶端收取的郵件仍然保留在服務(wù)器上,同時在客戶端上的操作都會反饋到服務(wù)器上,如:刪除郵件,標(biāo)記已讀等,服務(wù)器上的郵件也會做相應(yīng)的動作。所以無論從瀏覽器登錄郵箱或者客戶端 軟件登錄郵箱,看到的郵件以及狀態(tài)都是一致的。

IMAP和POP3有什么區(qū)別?

1.POP3協(xié)議允許電子郵件客戶端下載服務(wù)器上的郵件,但是在客戶端的操作(如移動郵、標(biāo)記已讀等),不會反饋到服務(wù)器上,比如通過客戶端收取了郵箱中的3封郵件并移動到其他文件夾,郵箱服務(wù)器上的這些郵件是沒有同時被移動的。

2.IMAP提供webmail與電子郵件客戶端之間的雙向通信,客戶端的操作都會反饋到服務(wù)器上,對郵件進(jìn)行的操作,服務(wù)器上的郵件也會做相應(yīng)的動作。

準(zhǔn)備SMTP登錄信息

常用郵件服務(wù)商的SMTP信息:

·QQ郵箱: SMTP服務(wù)器是smtp.qq.com,端口是465 / 587

·163郵箱:SMTP服務(wù)器是smtp.163.com,端口是465126郵箱: SMTP服務(wù)器是smtp

.126.com,端口是25

.Gmail郵箱:SMTP服務(wù)器是smtp.gmail.com,端口是465 / 587

準(zhǔn)備好SMTP登錄信息后,我們首先要把JavaMail相關(guān)的依賴Jar包javax.mail-1.6.2.jar加入至當(dāng)前項目。

jar包:

鏈接:https://pan.baidu.com/s/1H8pnkVskG8casxIoUCq69Q 提取碼:9aym

以126郵箱發(fā)送至QQ郵箱為例:

1.首先在郵箱中開啟此服務(wù)

新增授權(quán)密碼

2.在Java中進(jìn)行郵件的發(fā)送(郵件只包含文本)

以25端口為例,連接SMTP服務(wù)器時,需要準(zhǔn)備一個Properties對象,填入相關(guān)信息。最后獲取Session實例時,如果服務(wù)器需要認(rèn)證,還需要傳入一個Authenticator對象,并返回指定的用戶名和口令。當(dāng)我們獲取到Session實例后,打開調(diào)試模式可以看到SMTP通信的詳細(xì)內(nèi)容,便于調(diào)試。

package com.yy.demo;
 
import java.util.Properties;
 
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
 
/**
 *     創(chuàng)建session會話
 * @author YangYing
 *
 */
public class Demo01 {
    public static void main(String[] args) {
        //SMTP服務(wù)器地址
        String smtp = "smtp.126.com";
        
        //郵箱賬號和密碼
        String userName = "yy0525xxxxx@126.com";
        String password = "xxxxxxxxxxxx";
        
        //SMTP服務(wù)器的連接信息
        Properties props = new Properties();
        props.put("mail.smtp.host", smtp);//SMTP主機(jī)名
        props.put("mail.smtp.port", "25");//主機(jī)端口號
        props.put("mail.smtp.auth", "true");//是否需要用戶認(rèn)證
        props.put("mail.smtp.starttls.enable", "true");//啟用TLS加密
        
        //創(chuàng)建Session
        Session session = Session.getInstance(props, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(userName,password);
            }
            
        });
        //開啟調(diào)試模式
        session.setDebug(true);
        
        System.out.println(session);
        
        
        
    }
 
}

發(fā)送郵件

1.先創(chuàng)建一個Session對象

Session session = JavaMailUtil.crateSession();

2.創(chuàng)建郵件對象(Message抽象類的子類)

RecipientType.TO代表發(fā)送人

RecipientType.CC代表抄送人

MimeMessage msg = new MimeMessage(session);//傳入session
            msg.setFrom(new InternetAddress("yy052xxxx@126.com"));//發(fā)件人
            msg.setRecipient(RecipientType.TO,new InternetAddress("2452845234@qq.com"));//發(fā)送人
            msg.setSubject("你好呀","utf-8");

3.郵件正文包含有“html”標(biāo)簽(控制文本的格式)

msg.setText("我<b>是你</b>!","utf-8","html");//<b>標(biāo)簽加粗字體

4.發(fā)送

Transport.send(msg);

整體代碼如下:

package com.yy.demo;
 
import java.net.InetAddress;
 
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
 
/**
 *     發(fā)送郵件
 * @author YangYing
 *
 */
public class Demo02 {
    public static void main(String[] args) {
        try {
            //1.創(chuàng)建Session會話
            Session session = JavaMailUtil.crateSession();
            
            //2.創(chuàng)建郵件對象(Message抽象類的子類)
            MimeMessage msg = new MimeMessage(session);//傳入session
            msg.setFrom(new InternetAddress("yy0525xxx@126.com"));//發(fā)件人
            msg.setRecipient(RecipientType.TO,new InternetAddress("2452845234@qq.com"));//收件人
            msg.setSubject("你好呀","utf-8");
            
            //郵件正文包含有“html”標(biāo)簽(控制文本的格式)
            msg.setText("我<b>是你</b>!","utf-8","html");
            
            //3.發(fā)送
            Transport.send(msg);
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }
 
}

3.在Java中進(jìn)行郵件的發(fā)送(郵件包含文本和附件(圖片))

在上面代碼基礎(chǔ)上

1.設(shè)置郵件內(nèi)容

郵件正文內(nèi)容

內(nèi)容類型:設(shè)置字符編碼集

BodyPart textBodyPart = new MimeBodyPart();
            StringBuilder body = new StringBuilder();
            body.append("<h1>xz</h1>");
            body.append("<img src=\"cid:zhanzi\"/>");//通過內(nèi)容ID引用附件圖片
            textBodyPart.setContent(body.toString(),"text/html;charset= utf-8");

2.郵件附件內(nèi)容 

BodyPart imgBodyPart = new MimeBodyPart();
            imgBodyPart.setFileName("xz.jpg");//附件名稱
 
            imgBodyPart.setDataHandler(//讀取附件內(nèi)容
                    new DataHandler(
                            new ByteArrayDataSource(
                                    Files.readAllBytes(Paths.get("C:\\Users\\LENOVO\\Pictures\\Saved Pictures\\微信圖片_20200228144031.jpg")),
                                    "application/octet-stream")));
            
            imgBodyPart.setHeader("Content-ID", "<zhanzi>");//設(shè)置內(nèi)容ID

3.組合正文+附件

郵件內(nèi)容

Multipart multipart = new MimeMultipart();
            multipart.addBodyPart(textBodyPart);
            multipart.addBodyPart(imgBodyPart);
            
            msg.setContent(multipart);

4.發(fā)送

Transport.send(msg);

5.整體代碼

JavaMailUtil類是一個封裝的類,可重復(fù)利用

package com.yy.demo;
 
import java.util.Properties;
 
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
 
public class JavaMailUtil {
    public static Session crateSession() {
        //SMTP服務(wù)器地址
                String smtp = "smtp.126.com";
                
                //郵箱賬號和密碼
                String userName = "yy05xxxxxx@126.com";
                String password = "xxxxxxxxxxxx";
                
                //SMTP服務(wù)器的連接信息
                Properties props = new Properties();
                props.put("mail.smtp.host", smtp);//SMTP主機(jī)名
                props.put("mail.smtp.port", "25");//主機(jī)端口號
                props.put("mail.smtp.auth", "true");//是否需要用戶認(rèn)證
                props.put("mail.smtp.starttls.enable", "true");//啟用TLS加密
                
                //創(chuàng)建Session
                Session session = Session.getInstance(props, new Authenticator() {
                    @Override
                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication(userName,password);
                    }
                    
                });
                //開啟調(diào)試模式
                session.setDebug(true);
                
                return session;
    }
 
}
package com.yy.demo;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
 
import javax.activation.DataHandler;
import javax.mail.BodyPart;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
import javax.mail.internet.MimeMultipart;
import javax.mail.util.ByteArrayDataSource;
 
public class Demo04 {
    public static void main(String[] args) {
        try {
            //創(chuàng)建Session
            Session session = JavaMailUtil.crateSession();
            
            //創(chuàng)建郵件對象
            MimeMessage msg = new MimeMessage(session);//傳入session
            msg.setFrom(new InternetAddress("yy05250915@126.com"));//發(fā)件人
            msg.setRecipient(RecipientType.TO, new InternetAddress("2452845234@qq.com"));
            msg.setSubject("我還是你!","utf-8");
            
            //設(shè)置郵件內(nèi)容
            //郵件正文內(nèi)容
            //內(nèi)容類型:設(shè)置字符編碼集
            BodyPart textBodyPart = new MimeBodyPart();
            StringBuilder body = new StringBuilder();
            body.append("<h1>xz</h1>");
            body.append("<img src=\"cid:zhanzi\"/>");//通過內(nèi)容ID引用附件圖片
            textBodyPart.setContent(body.toString(),"text/html;charset= utf-8");
            
            //郵件附件內(nèi)容
            BodyPart imgBodyPart = new MimeBodyPart();
            imgBodyPart.setFileName("xz.jpg");//附件名稱
 
            imgBodyPart.setDataHandler(//讀取附件內(nèi)容
                    new DataHandler(
                            new ByteArrayDataSource(
                                    Files.readAllBytes(Paths.get("C:\\Users\\LENOVO\\Pictures\\Saved Pictures\\微信圖片_20200228144031.jpg")),
                                    "application/octet-stream")));
            
            imgBodyPart.setHeader("Content-ID", "<zhanzi>");//設(shè)置內(nèi)容ID
            
            //組合正文+附件
            //郵件內(nèi)容
            Multipart multipart = new MimeMultipart();
            multipart.addBodyPart(textBodyPart);
            multipart.addBodyPart(imgBodyPart);
            
            msg.setContent(multipart);
            
            //發(fā)送
            Transport.send(msg);
            
        } catch (MessagingException | IOException e) {
            e.printStackTrace();
        }
    }
 
}

郵件內(nèi)容

以上就是基于Java實現(xiàn)收發(fā)電子郵件功能的詳細(xì)內(nèi)容,更多關(guān)于Java收發(fā)電子郵件的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

淳化县| 任丘市| 阳泉市| 凤山市| 宁夏| 兴安盟| 桂平市| 英德市| 淮阳县| 霸州市| 寿光市| 平阴县| 固原市| 祁东县| 榆社县| 甘肃省| 五莲县| 荣成市| 梓潼县| 山西省| 平果县| 思茅市| 通化市| 浦城县| 陇川县| 合作市| 依安县| 桐梓县| 湛江市| 固始县| 区。| 荣成市| 凌海市| 密山市| 临夏县| 五指山市| 安塞县| 上犹县| 涟水县| 历史| 桐城市|