国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

javamail模擬郵箱功能發(fā)送電子郵件-基礎實戰(zhàn)篇(javamail API電子郵件實例)

2019-11-14 21:37:07
字體:
來源:轉載
供稿:網友
javamail模擬郵箱功能發(fā)送電子郵件-基礎實戰(zhàn)篇(javamail API電子郵件實例)

引言:

  JavaMail 是一種可選的、能用于讀取、編寫和發(fā)送電子消息的包

  JavaMail jar包下載地址:http://java.sun.com/PRoducts/javamail/downloads/index.html

  JavaMail API中包含了多種郵件傳輸協(xié)議: SMTP POP(最新為pop3) IMAP MIME 四大類 (本章主要講解常用的 SMTP)

  該API的幾大核心類:會話(session)、消息(message)、地址(address)、驗證程序(Authentication)、傳輸(Transport),存儲和文件夾

  廢話不多說,跟著例子一步步解釋每個類的主要功能 —.—


實例代碼演示:

  **********************此例可直接復制粘帖至編譯器進行測試哦**********************

package com.cplatform.movie.back.test;import java.io.UnsupportedEncodingException;import java.util.Properties;import javax.mail.Address;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.internet.AddressException;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;/** * javaMail API 模擬郵箱發(fā)送電子郵件 * @author liuyt * @date  2014-10-24 上午10:10:51 */public class EmailFunction {    /**     * 發(fā)送郵件的props文件 (可使用自建priperty文件)     * 用于初始化一個session實例,配置了一個session會話的一些基本信息     */    private final transient Properties props = new Properties();        /**     * 郵件發(fā)送者的用戶名和密碼     */    private transient String username = "15138577682@163.com";    private transient String password = "郵箱密碼";    /**     * session為一個基本的郵件會話,通過該會話可執(zhí)行其他郵件工作     * 如:之后的初始化一個MimeMessage實例     */    private transient Session session;        /**     * MIME類型郵件MimeMessage類(抽象消息類Message的一個子類)     * 可以通過將Session對象傳遞給MimeMessage構造器的方法來創(chuàng)建     */    private transient MimeMessage message;        /**     * 郵件內容類型 (這里演示一個html格式的消息格式)     */    private final static String CONTENT_TYPE_HTML = "text/html;charset=utf-8";        /**     * 端口號      */    private final static int MAIL_PORT = 25;        /**     * 郵件內容     */    private String content = "點擊進入» <a href='http://m.survivalescaperooms.com/liuyitian'>劉一天的博客</a>";         /**      * 繼承Authenticator子類用于用戶認證  (這里指郵件服務器對用戶的認證)     * 也可外部創(chuàng)建一個單獨的郵件實體類(包涵用戶名/密碼即可),繼承Authenticator類來重寫PasswordAuthentication方法     */      static class MyAuthenricator extends Authenticator{          private String user=null;          private String pass="";          public MyAuthenricator(String user,String pass){              this.user=user;              this.pass=pass;          }          @Override          protected PasswordAuthentication getPasswordAuthentication() {              return new PasswordAuthentication(user,pass);          }                }          /**     * 初始化    session 實例方法     * @param username 發(fā)送郵件的用戶名(地址)     * @param password 密碼     * @param smtpHostName  SMTP郵件服務器地址     */    private void initSession(String username, String password, String smtpHostName) {                // 初始化props文件        props.setProperty("mail.transport.protocol", "smtp");//發(fā)送郵件協(xié)議        props.put("mail.smtp.auth", "true");        //需要驗證        props.put("mail.smtp.host", smtpHostName);    //服務器地址                  // 根據property文件創(chuàng)建session,并傳入Authenticator進行驗證        session = Session.getInstance(props, new MyAuthenricator(username, password));                // 是否控制臺打印消息列表 (可選)        session.setDebug(true);    }        /**     * 初始化郵箱message(消息實例)方法     * @param subject    郵件主題     * @param content    郵件內容     * @throws MessagingException      * @throws AddressException      * @throws UnsupportedEncodingException      */    private void initMessage(String subject, Object content)             throws AddressException, MessagingException, UnsupportedEncodingException {                // 根據session創(chuàng)建一個消息對象        message = new MimeMessage(session);                // 設置發(fā)件人地址  (第二個參數(shù)為顯示發(fā)件人名稱,目前還沒有測試成功)        message.setFrom(new InternetAddress(username, "要顯示的發(fā)件人名稱"));                // 設置郵件的主題        message.setSubject("主題:javamail測試郵件");                // 設置郵件的發(fā)送內容和內容的content-type(這里采用text/html格式)        message.setContent(content.toString(),EmailFunction.CONTENT_TYPE_HTML);                // 設置郵件的接收人地址--方法一 (選其一即可)        // Address[] address = new Address[]{new InternetAddress("418874847@QQ.com"),"...更多列表..."};        // message.setReplyTo(addresses);                // 設置郵件的接收人地址--方法二 (選其一即可)        // 如果群發(fā)郵件,收件人較多,可另寫一個方法用于專門循環(huán)遍歷并設置接收人        message.addRecipient(Message.RecipientType.TO, new InternetAddress("418874847@qq.com"));        message.addRecipient(Message.RecipientType.TO, new InternetAddress("12450374@qq.com"));    }        /**     * 初始化郵件發(fā)送器方法     * @param username  發(fā)送郵件的用戶名(地址),并以此解析SMTP服務器地址     * @param password  發(fā)送郵件的密碼     * @throws MessagingException      * @throws UnsupportedEncodingException      * @throws AddressException      * @return     */    public void SimpleMailSender(final String username, final String password)             throws AddressException, UnsupportedEncodingException, MessagingException {                // 通過郵箱地址解析出smtp服務器,對大多數(shù)郵箱都管用 (還有IMAP和POP3)        final String smtpHostName = "smtp." + username.split("@")[1];                // 調用初始化session方法        initSession(username, password, smtpHostName);                // 調用初始化MimeMessage方法 (在初始化session完畢后)        initMessage("郵件主題:測試郵件", content);    }        /**     * 郵件發(fā)送     * @throws MessagingException     * @throws UnsupportedEncodingException     */    private void send() throws MessagingException, UnsupportedEncodingException {                // 調用初始化郵件方法        SimpleMailSender(username, password);        // 根據session來獲得一個Transport抽象類對象        Transport tran = session.getTransport();                // 打開鏈接 ,此時會去校驗用戶名和密碼 (參數(shù)列表:【 郵箱服務器地址】【端口號】【 發(fā)件箱用戶名】【發(fā)件箱密碼】)        tran.connect(props.getProperty("mail.smtp.host"), EmailFunction.MAIL_PORT, username, password);                // 發(fā)送郵件  (第二個參數(shù)null指收件人地址,因為在初始化message時已經設置好了收件人地址,此處便省略)        tran.sendMessage(message, null);                // 關閉通道        tran.close();    }        /**     * main方法測試     * @param args     * @throws AddressException     * @throws MessagingException     * @throws UnsupportedEncodingException     */     public static void main(String[] args)             throws AddressException, MessagingException, UnsupportedEncodingException {        //直接調用發(fā)送方法        new EmailFunction().send();    }    }

 小結簡單流程:

  根據實例代碼,來總結下用javamail來發(fā)送一封簡單郵件的流程
  • 下載javamail API jar包,并path到項目中去。(jar包下載地址請看本章開頭)
  • 創(chuàng)建一個java bean,設置必要私有屬性,提高代碼的復用性和可讀性
  • 創(chuàng)建內部類并繼承Authenticator (驗證機制)類,提供必要屬性用戶名和密碼,重寫getPasswordAuthentication方法
  • 根據java.util.property文件初始化一個郵件的Session會話實例
  • 根據步驟四得來的Session實例來初始化一個Message(消息)實例,并設置各個參數(shù)(收、發(fā)件人、主題、內容等)
  • 根據Session創(chuàng)建一個Transport(傳輸)實例 --> 打開鏈接(connect) --> 發(fā)送(sendMessage) --> 關閉(close)

     上述流程是依據本章的實例代碼來羅列的,只是讓大家對流程有個簡單的認識,代碼本身可能并不精簡,還請哆哆指正。

javamail API 系列篇:   

  1. javamail模擬郵箱功能發(fā)送電子郵件-基礎實戰(zhàn)篇
  2. javamail模擬郵箱功能發(fā)送電子郵件-中級實戰(zhàn)篇【新增附件發(fā)送方法】
  3. javamail模擬郵箱功能獲取郵件內容-中級實戰(zhàn)篇【內容|附件下載方法】
  4. javamail模擬郵箱功能--郵件回復-中級實戰(zhàn)篇【郵件回復方法】
  5. javamail模擬郵箱功能--郵件刪除-中級實戰(zhàn)篇【郵件標記方法】

                            寫作不易,難免有疏漏和錯誤,還請慷慨指正,覺得有幫助還請推薦哦。

轉載請注明出處:http://m.survivalescaperooms.com/liuyitian/p/4048006.html


                                             每天多學一點點 代碼少敲一點點


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 寿阳县| 饶阳县| 湘乡市| 高阳县| 巴东县| 宿州市| 吉隆县| 彰化市| 孟村| 陵川县| 家居| 福建省| 清水县| 三亚市| 应城市| 新建县| 文化| 刚察县| 涡阳县| 尉犁县| 寿宁县| 渭源县| 漠河县| 庆城县| 久治县| 宜兰市| 临夏市| 翁源县| 吴川市| 肇源县| 定日县| 茂名市| 涿州市| 霍城县| 买车| 吐鲁番市| 绍兴县| 婺源县| 永州市| 芒康县| 芒康县|