国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
JAVA MAIL發(fā)送郵件

JAVA MAIL API
一、Java Mail API本質(zhì)上是基于SMTP協(xié)議、POP協(xié)議、IMAP協(xié)議和MIME協(xié)議
1、SMTP協(xié)議
   簡(jiǎn)單郵件傳輸協(xié)議是用于傳送電子郵件的機(jī)制。在Java Mail API環(huán)境中,基于JavaMail的應(yīng)用程序?qū)⒂谂cInternet服務(wù)提供商的SMTP服務(wù)器通信,SMTP服務(wù)器把消息轉(zhuǎn)發(fā)給用做接收消息的SMTP服務(wù)

器。
2、POP協(xié)議
   郵局協(xié)議是Internet上大多數(shù)人用來(lái)接收郵件的機(jī)制。
3、IMAP協(xié)議
   Internet消息訪(fǎng)問(wèn)協(xié)議是用于接收消息的更加高級(jí)的協(xié)議。
4、MIME協(xié)議
   多用途的國(guó)際郵件擴(kuò)充協(xié)議定義傳輸?shù)膬?nèi)容。
二、Java Mail開(kāi)發(fā)包
Java Mail API的核心類(lèi)包括會(huì)話(huà)、消息、地址、身份驗(yàn)證、傳輸、存儲(chǔ)和文件夾。
1、會(huì)話(huà)類(lèi)(Session)
   Session類(lèi)定義了一個(gè)基本的郵件會(huì)話(huà)。Session對(duì)象利用java.util.Properties對(duì)象獲取郵件服務(wù)器、用戶(hù)名和密碼等信息,以及其他可在整個(gè)應(yīng)用程序中共享的信息。
   創(chuàng)建默認(rèn)會(huì)話(huà)
Properties props = new Properties();
        ...//填充Properties對(duì)象
        Session session = Session.getDefaultInstance(props,null);
   創(chuàng)建獨(dú)特會(huì)話(huà)
        Properties props = new Properties();
        ...//填充Properties對(duì)象
        Session session = Session.getInstance(props,null);
   Null參數(shù)是一種Authenticator(認(rèn)證)對(duì)象
2、消息類(lèi)(MimeMessage)
   一個(gè)MimeMessage對(duì)象是一種MIME類(lèi)型和報(bào)頭的消息。
   可以通過(guò)將Session對(duì)象傳遞給MimeMessage構(gòu)造器的方法來(lái)創(chuàng)建消息:
   MimeMessage message = new MimeMessage(session);
   一旦創(chuàng)建了消息,就可以設(shè)置消息的各個(gè)部分
設(shè)置內(nèi)容的基本機(jī)制是setContent()方法,它帶有表示內(nèi)容和MIME類(lèi)型的參數(shù)。
   message.setContent("hello","text/plain");
如果消息是純文本
   message.setText("hello");
設(shè)置主題
   message.setSubject("subject");
3、地址類(lèi)
   用Address類(lèi)為信件標(biāo)上地址。
   要?jiǎng)?chuàng)建只帶有電子郵件地址的地址,可以把電子郵件地址傳遞給Address類(lèi)的構(gòu)造器:
Address address = new InternetAddress("yourCount@yourServer.com");
   如果想要一個(gè)名字出現(xiàn)在電子郵件地址后,也可以將其傳遞給構(gòu)造器:
Address address = new InternetAddress("yourCount@youServer.com","yourName");
   地址與消息連接:setFrom()和setReplyTo()
4、身份驗(yàn)證類(lèi)
   在創(chuàng)建時(shí),必須用會(huì)話(huà)記錄Authentication類(lèi)。其后,當(dāng)需要進(jìn)行身份驗(yàn)證時(shí),通知Authentication,將會(huì)彈出一個(gè)窗口,或從一個(gè)配置文件中讀取用戶(hù)名和密碼,并把他們作為一個(gè)

PasswordAuthentication對(duì)象返回給調(diào)用程序。
Properties props = new Properties();
...//填充Properties對(duì)象
Authentication auth = new MyAuthenticator();
        Session session = Session.getDefaultInstance(props,auth);
5、傳輸類(lèi)
   默認(rèn)版本
   Transport.send(message);
   從用于協(xié)議的會(huì)話(huà)中獲取一個(gè)特定的實(shí)例,然后傳遞用戶(hù)名和密碼并發(fā)送消息,最后關(guān)閉連接
   message.saveChanges();
        Transport transport = session.getTransport("smtp");
   transport.contect(host,username,password);
transport.sendMessage(message,message.getAllRecipients());
transport.close();
6、存儲(chǔ)類(lèi)和文件夾類(lèi)
   Store store = session.getStore("pop3");
   store.connect(host,username,password);
   Folder folder = store.getFolder("INBOX");
   folder.open(Folder.READ_ONLY);
   Message message[] = folder.getMessages();
   對(duì)于POP3協(xié)議,唯一可用的文件夾是INBOX。如果使用的是IMAP協(xié)議,則可以使用其他的文件夾。
   一旦讀取消息,可以用getContent()方法獲取其內(nèi)容,或使用writeTo()方法將其內(nèi)容寫(xiě)到一個(gè)流中。getContent()方法只獲取消息內(nèi)容,而writeTo()方法則還會(huì)輸出報(bào)頭。
   System.out.println(((MimeMessage)message).getContent());
   讀取完郵件后,就可以關(guān)閉對(duì)文件夾和存儲(chǔ)的連接
   folder.close(aBoolean);
   store.close();
三、實(shí)例
package com.email;
/**
* @author star
* SendMail.java
*/
import java.net.URL;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.activation.URLDataSource;
import javax.mail.BodyPart;
import javax.mail.Multipart;
import javax.mail.Message;
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.MimeMultipart;
import javax.mail.internet.MimeUtility;

//import javax.mail.internet.MailDateFormat;

public class SendMail {
        public static String TEXT = "text/plain;charset=gb2312";
        public static String HTML = "text/html;charset=gb2312";
        private String host; //郵件服務(wù)器
        private String user; //用戶(hù)名
        private String pass;//用戶(hù)密碼
        private String from;//發(fā)信人
        private String to;//收信人
        private String cc;//Carbon Copy, 抄送郵件給某人
        private String bc;//bcc Blind Carbon Copy,隱蔽副本 隱蔽抄送給某人
        private String subject;//郵件主題
        private BodyPart body;//郵件內(nèi)容
        private boolean needAuth; //是否需要認(rèn)證
        private List attaches;//郵件附件
/**
* 構(gòu)造方法
*
*/
        public SendMail() {
                needAuth = true;
                attaches = new ArrayList();
        }
        /**
         * 構(gòu)造方法
         * @param host
         */
        public SendMail(String host) {
                needAuth = true;
                attaches = new ArrayList();
                this.host = host;
        }
        /**
         * 構(gòu)造方法
         * @param host
         * @param user
         * @param pass
         */
        public SendMail(String host, String user, String pass) {
                needAuth = true;
                attaches = new ArrayList();
                this.host = host;
                this.user = user;
                this.pass = pass;
        }
//設(shè)置郵件服務(wù)器是否需要認(rèn)證
        public void setNeedAuth(boolean needAuth) {
                this.needAuth = needAuth;
        }
        public void setFrom(String from) {
                this.from = from;
        }
        public void setTo(String to) {
                this.to = to;
        }
        public String getPass() {
                return pass;
        }
        public String getUser() {
                return user;
        }
        public void setPass(String string) {
                pass = string;
        }
        public void setUser(String string) {
                user = string;
        }

        public String getFrom() {
                return from;
        }
        public String getHost() {
                return host;
        }
        public boolean isNeedAuth() {
                return needAuth;
        }
        public String getSubject() {
                return subject;
        }
        public void setHost(String string) {
                host = string;
        }
        public void setBlindTo(String bc) {
                this.bc = bc;
        }
        public void setCopyTo(String cc) {
                this.cc = cc;
        }
        public void setSubject(String subject) {
                this.subject = subject;
        }
/**
* 設(shè)置郵件內(nèi)容的形式
* @param string
* @param contentType
*/
        public void setBody(String string, String contentType) {
                try {
                        body = new MimeBodyPart();
                        DataHandler dh = new DataHandler(string, contentType);
                        body.setDataHandler(dh);
                } catch (Exception exception) {
                }
        }
/**
* 設(shè)置郵件的內(nèi)容的格式為文本格式
* @param string
*/
        public void setBodyAsText(String string) {
                setBody(string, TEXT);
        }
/**
* 以HTMl的形式存放內(nèi)容
* @param string
*/
        public void setBodyAsHTML(String string) {
                setBody(string, HTML);
        }
/**
* 從文件中自動(dòng)導(dǎo)入郵件內(nèi)容
* @param filename
*/
        public void setBodyFromFile(String filename) {
                try {
                        BodyPart mdp = new MimeBodyPart();
                        FileDataSource fds = new FileDataSource(filename);
                        DataHandler dh = new DataHandler(fds);
                        mdp.setDataHandler(dh);
                        attaches.add(mdp);
                } catch (Exception exception) {
                }
        }
/**
* 從一個(gè)URL導(dǎo)入郵件的內(nèi)容
* @param url
*/
        public void setBodyFromUrl(String url) {
                try {
                        BodyPart mdp = new MimeBodyPart();
                        URLDataSource ur = new URLDataSource(new URL(url));
                        DataHandler dh = new DataHandler(ur);
                        mdp.setDataHandler(dh);
                        attaches.add(mdp);
                } catch (Exception exception) {
                }
        }
/**
* 將String中的內(nèi)容存放入文件showname,并將這個(gè)文件作為附件發(fā)送給收件人
* @param string 為郵件的內(nèi)容
* @param showname 顯示的文件的名字
*/
        public void addAttachFromString(String string, String showname) {
                try {
                        BodyPart mdp = new MimeBodyPart();
                        DataHandler dh = new DataHandler(string, TEXT);
                        mdp.setFileName(MimeUtility.encodeWord(showname, "gb2312", null));
                        mdp.setDataHandler(dh);
                        attaches.add(mdp);
                } catch (Exception exception) {
                }
        }
/**
* filename為郵件附件
*在收信人的地方以showname這個(gè)文件名來(lái)顯示
* @param filename
* @param showname
*/
        public void addAttachFromFile(String filename, String showname) {
                try {
                        BodyPart mdp = new MimeBodyPart();
                        FileDataSource fds = new FileDataSource(filename);
                        DataHandler dh = new DataHandler(fds);
                        mdp.setFileName(MimeUtility.encodeWord(showname, "gb2312", null));
                        mdp.setDataHandler(dh);
                        attaches.add(mdp);
                } catch (Exception exception) {
                }
        }
/**
* 將互聯(lián)網(wǎng)上的一個(gè)文件作為附件發(fā)送給收信人
* 并在收信人處顯示文件的名字為showname
* @param url
* @param showname
*/
        public void addAttachFromUrl(String url, String showname) {
                try {
                        BodyPart mdp = new MimeBodyPart();
                        URLDataSource ur = new URLDataSource(new URL(url));
                        DataHandler dh = new DataHandler(ur);
                        mdp.setFileName(MimeUtility.encodeWord(showname, "gb2312", null));
                        mdp.setDataHandler(dh);
                        attaches.add(mdp);
                } catch (Exception exception) {
                }
        }
/**
* 發(fā)送郵件,需要身份認(rèn)證
* @throws Exception
*/
        public void send() throws Exception {
                try {
                   //*****會(huì)話(huà)類(lèi)*****//
                        Properties props = new Properties();
                        if (host != null && !host.trim().equals(""))
                                props.setProperty("mail.smtp.host", host);//key   value
                        else
                                throw new Exception("沒(méi)有指定發(fā)送郵件服務(wù)器");
                        if (needAuth)
                                props.setProperty("mail.smtp.auth", "true");
                        Session s = Session.getInstance(props, null);
                        //*****消息類(lèi)*****//
                        MimeMessage msg = new MimeMessage(s);               
                        msg.setSubject(subject);//設(shè)置郵件主題
                        msg.setSentDate(new Date());//設(shè)置郵件發(fā)送時(shí)間
                        //*****地址類(lèi)*****//
                        if (from != null)
                                msg.addFrom(InternetAddress.parse(from));//指定發(fā)件人
                        else
                                throw new Exception("沒(méi)有指定發(fā)件人");                       
                        if (to != null)
                                msg.addRecipients(Message.RecipientType.TO,InternetAddress.parse(to));//指定收件人
                        else
                                throw new Exception("沒(méi)有指定收件人地址");                       
                        if (cc != null)
                                msg.addRecipients(Message.RecipientType.CC,InternetAddress.parse(cc));//指定抄送                       
                        if (bc != null)
                                msg.addRecipients(Message.RecipientType.BCC,InternetAddress.parse(bc));//指定密送
                        Multipart mm = new MimeMultipart();
                        if (body != null)
                                mm.addBodyPart(body);//設(shè)置郵件的附件
                        for (int i = 0; i < attaches.size(); i++) {
                                BodyPart part = (BodyPart) attaches.get(i);
                                mm.addBodyPart(part);
                        }                    
                        msg.setContent(mm);//設(shè)置郵件的內(nèi)容
                        //*****傳輸類(lèi)*****//
                        msg.saveChanges();//保存所有改變                    
                        Transport transport = s.getTransport("smtp");//發(fā)送郵件服務(wù)器(SMTP)               
                        transport.connect(host, user, pass);//訪(fǎng)問(wèn)郵件服務(wù)器           
                        transport.sendMessage(msg, msg.getAllRecipients());//發(fā)送信息
                        transport.close();//關(guān)閉郵件傳輸
                } catch (Exception e) {
                   e.printStackTrace();
                        throw new Exception("發(fā)送郵件失敗:", e);
                }
        }
}


測(cè)試類(lèi)
index.jsp
<%@ page contentType="text/html;charset=gb2312" language="java" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>發(fā)送郵件測(cè)試</title>
    <meta name="copyright" content="郵件發(fā)送測(cè)試. All rights reserver." />
    <meta name="Keywords" content="jsp,servlet,mail" />
    <meta name="Description" content="發(fā)送郵件測(cè)試" />
    <meta http-equiv="content-type" content="text/html;charset=gb2312" />
</head>
<body>
<form method="post" action="Sendmail.jsp">
   <table border="1" cellpadding="0" cellspacing="3" align="center">
    <tr>
     <td>郵件服務(wù)器</td><td><input type="text" name="host" value="smtp.yourServer.com"></td>
    </tr>
    <tr>
     <td>用戶(hù)名</td><td><input type="text" name="user" value="yourName@yourServer.com"></td>
    </tr>
    <tr>
     <td>密碼</td><td><input type="password" name="password" value="123456"></td>
    </tr>
    <tr>
     <td>郵件主體</td><td><input type="text" name="subject" value="郵件發(fā)送測(cè)試"></td>
    </tr>
    <tr>
     <td>收件人</td><td><input type="text" name="to" value="yourName@yourServer.com"></td>
    </tr>
    <tr>
     <td>發(fā)送人</td><td><input type="text" name="from" value="yourName@yourServer.com"></td>
    </tr>
    <tr>
     <td>郵件內(nèi)容</td><td><input type="text" name="bodyashtml" value="大家好!郵件測(cè)試。"></td>
    </tr>
    <tr>
     <td>附件</td><td><input type="text" name="attachfile" value="D:\\test.txt"></td>
    </tr>
    <tr>
     <td><input type="submit" name="submit" value="發(fā)送" ></td>
     <td><input type="reset" name="reset" value="重置" ></td>
    </tr>
   </table>
</form>
</body>
</html>


Sendmail.jsp
<%@ page contentType="text/html;charset=gb2312" language="java" %>
<%@ page import="com.email.*,com.tool.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>發(fā)送郵件測(cè)試</title>
<meta name="copyright" content="郵件發(fā)送測(cè)試. All rights reserved.">
<meta name="Keywords" content="jsp,servlet,mail">
<meta name="Description" content="發(fā)送郵件測(cè)試">
<meta http-equiv="content-type" content="text/html; charset=gb2312">
</head>
<body>
<%
String host = request.getParameter("host");
String user = request.getParameter("user");
String password = request.getParameter("password");
String subject = request.getParameter("subject");
subject = new ToChinese().getGB2312(subject);
String to = request.getParameter("to");
String from = request.getParameter("from");
String bodyashtml = request.getParameter("bodyashtml");
bodyashtml = new ToChinese().getGB2312(bodyashtml);
String attachfile = request.getParameter("attachfile");
attachfile = new ToChinese().getGB2312(attachfile);
out.println("<br>"+host);
out.println("<br>"+user);
//out.println("<br>"+password);
out.println("<br>"+subject);
out.println("<br>"+to);
out.println("<br>"+from);
out.println("<br>"+bodyashtml);//郵件內(nèi)容
out.println("<br>"+attachfile);//郵件附件
try {
    SendMail send = new SendMail();
    send.setHost(host);
    //System.out.println(host);
    send.setUser(user);
    //System.out.println(user);
    send.setPass(password);
    //System.out.println(password);
    send.setSubject(subject);
    //System.out.println(subject);
    send.setTo(to);
    //System.out.println(to);
    send.setFrom(from);
    //System.out.println(from);
    send.setBodyAsHTML(bodyashtml);//以HTML形式存放內(nèi)容
    //System.out.println(bodyashtml);
    send.addAttachFromFile(attachfile,"aa.txt");//附件路徑,附件名稱(chēng)
    //System.out.println(attachfile);
    send.send();
    out.println("<br>郵件發(fā)送成功?。?!");
   } catch (Exception e) {
    out.println("<br>"+e.getMessage());
    out.println("<br>郵件發(fā)送失敗?。?!");
   }
%>
</body>
</html>

工具類(lèi)ToChinese.java
package com.tool;

public class ToChinese{
    public ToChinese() {}
    public String getGB2312(String s){
     if (s != null && !"".equals(s)) {
    try {
     s = new String(s.getBytes("8859_1"), "gb2312");
     return s;
    } catch (Exception ex) {
     System.out.print(ex.getMessage());
    }
   }
   return "";
    }
}

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
主題:java 加密解密簡(jiǎn)單實(shí)現(xiàn)
javax.mail使用例子
黑馬 JavaMail加深總結(jié)pop3協(xié)議收郵件
Java發(fā)郵件 實(shí)現(xiàn)步驟+代碼
JavaMail郵件發(fā)送實(shí)用類(lèi)
json前后臺(tái)傳值
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服