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

Java使用JavaMail API發(fā)送和接收郵件的代碼示例

 更新時(shí)間:2016年06月16日 08:55:14   作者:it_wangxiangpan  
JavaMail是Oracle甲骨文開(kāi)發(fā)的Java郵件類API,支持多種郵件協(xié)議,這里我們就來(lái)看一下Java使用JavaMail API發(fā)送和接收郵件的代碼示例

使用Javamail發(fā)送郵件,必需的jar包(請(qǐng)下載javamail的源文件,官方下載頁(yè):http://www.oracle.com/technetwork/java/javamail/index-138643.html):
mailapi.jar。定義了收發(fā)郵件所使用到的接口API;
smtp.jar。包含了發(fā)送郵件使用到的類;
pop3.jar。包含了收郵件使用到的類;
我們通常發(fā)送郵件使用的協(xié)議是smtp協(xié)議,接受郵件使用的協(xié)議是pop3協(xié)議。或者,我們直接將mail.jar加入到工程,這個(gè)jar包里邊包含了java收發(fā)郵件所有的接口和類。
 
常用的類:

  •      javax.mail.Session;                                                    -------->保存連接服務(wù)器所需要的信息;
  •      javax.mail.Message;                                                  -------->郵件體,保存郵件的內(nèi)容;
  •      javax.mail.Transport;                                                 -------->發(fā)送郵件的載體
  •      javax.mail.internet.InternetAddress;                         -------->郵件的地址信息

發(fā)送郵件

下邊,我先列出使用Java發(fā)送郵件的最簡(jiǎn)單的一個(gè)小測(cè)試示例:

import java.util.Properties; 
 
import javax.mail.Address; 
import javax.mail.Message; 
import javax.mail.MessagingException; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeMessage; 
 
/** 
 * 
 * QQ(mail.qq.com):POP3服務(wù)器(端口995)SMTP服務(wù)器(端口465或587)。 
 * 
 */ 
public class Demo1 { 
 
  /** 
   * @param args 
   * @throws MessagingException 
   */ 
  public static void main(String[] args) throws MessagingException { 
     
    String sendUserName = "wangxiangpan@126.com"; 
    String sendPassword = "pwd"; 
     
    Properties properties = new Properties(); 
    properties.setProperty("mail.smtp.auth", "true");//服務(wù)器需要認(rèn)證 
    properties.setProperty("mail.transport.protocol", "smtp");//聲明發(fā)送郵件使用的端口 
     
    Session session = Session.getInstance(properties); 
    session.setDebug(true);//同意在當(dāng)前線程的控制臺(tái)打印與服務(wù)器對(duì)話信息 
     
    Message message = new MimeMessage(session);//構(gòu)建發(fā)送的信息 
    message.setText("你好,我是Champion.Wong!");//信息內(nèi)容 
    message.setFrom(new InternetAddress("wangxiangpan@126.com"));//發(fā)件人 
     
    Transport transport = session.getTransport(); 
    transport.connect("smtp.126.com", 25, sendUserName, sendPassword);//連接發(fā)件人使用發(fā)件的服務(wù)器 
    transport.sendMessage(message, new Address[]{new InternetAddress("492134880@qq.com")});//接受郵件 
    transport.close(); 
  } 
 
} 

一般的,我們使用Authenticator把用戶名和密碼封裝起來(lái),不透明!所以:

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; 
 
import junit.framework.TestCase; 
 
/** 
 * javamail 發(fā)送郵件 
 * @author Champion Wong 
 * Message.addRecipient(Message.Recipient recipient, Address address); 發(fā)郵件的時(shí)候指定收件人和收件人的角色 
 * Message.RecipientType.TO 收件人 
 * Message.RecipientType.CC 抄送,即發(fā)郵件的時(shí)候順便給另一個(gè)人抄一份,不用回復(fù)!但是,上邊的收件人可以看到你都抄送給了誰(shuí) 
 * Message.RecipientType.BCC 暗送,也是發(fā)郵件的時(shí)候順便給另一個(gè)人暗發(fā)一份,但是,不同于上邊的是,收件人不能看到你都暗送給了誰(shuí) 
 * 
 */ 
public class Demo2 extends TestCase { 
 
  private static final String sendUserName = "wangxiangpan@126.com";// 發(fā)送郵件需要連接的服務(wù)器的用戶名 
 
  private static final String sendPassword = "pwd";// 發(fā)送郵件需要連接的服務(wù)器的密碼 
 
  private static final String sendProtocol = "smtp";// 發(fā)送郵件使用的端口 
 
  private static final String sendHostAddress = "smtp.126.com";// 發(fā)送郵件使用的服務(wù)器的地址 
 
  public void test() throws AddressException, MessagingException { 
 
    Properties properties = new Properties(); 
    properties.setProperty("mail.smtp.auth", "true");// 服務(wù)器需要認(rèn)證 
    properties.setProperty("mail.transport.protocol", sendProtocol);// 聲明發(fā)送郵件使用的端口 
    properties.setProperty("mail.host", sendHostAddress);// 發(fā)送郵件的服務(wù)器地址 
 
    Session session = Session.getInstance(properties, new Authenticator() { 
      protected PasswordAuthentication getPasswordAuthentication() { 
        return new PasswordAuthentication(sendUserName, sendPassword); 
      } 
    }); 
    session.setDebug(true);//在后臺(tái)打印發(fā)送郵件的實(shí)時(shí)信息 
 
    Message message = new MimeMessage(session); 
    message.setFrom(new InternetAddress("wangxiangpan@126.com")); 
    message.setSubject("Demo2JavaCode發(fā)送郵件測(cè)試,采用Authenticator");// 設(shè)置主題 
    message.setRecipients(Message.RecipientType.TO, InternetAddress 
        .parse("492134880@qq.com,wangxiangpan@126.com"));// 發(fā)送 
    message.setRecipients(Message.RecipientType.CC, InternetAddress 
        .parse("msn_wangxiangpan@hotmail.com"));// 抄送 
    message 
        .setContent( 
            "<span style="font-size:20px; color:#FFCCFF" mce_style="font-size:20px; color:#FFCCFF">如果您看到,證明測(cè)試成功了!</span>", 
            "text/html;charset=gbk"); 
 
    Transport.send(message);//發(fā)送郵件 
  } 
} 

我們發(fā)送一個(gè)比較復(fù)雜的郵件,包括附件,圖文:

import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.OutputStream; 
import java.util.Properties; 
 
import javax.activation.DataHandler; 
import javax.activation.DataSource; 
import javax.activation.FileDataSource; 
import javax.mail.Authenticator; 
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.MimeBodyPart; 
import javax.mail.internet.MimeMessage; 
import javax.mail.internet.MimeMultipart; 
import javax.mail.internet.MimeUtility; 
 
/** 
 * 
 * @author Administrator Mr XP.Wang 
 * MimeMultipart 一般電子郵件的容器是Multipart,定義了增加及刪除電子郵件各部分內(nèi)容的方法, 
 *        但是其是抽象類,需要其子類MimeMultipart來(lái)時(shí)用MimeMessage對(duì)象 
 * MimeBodyPart 是BodyPart具體用于mimeMessage的一個(gè)子類,MimeBodyPart對(duì)象代表一個(gè) 
 *       mimeMultipart對(duì)象的每一個(gè)部分 
 * MimeUtility.encodeText(String cn)用于解決郵件中的頭部信息中中文的亂碼問(wèn)題 
 * 
 */ 
public class Demo3_test { 
 
  public static void main(String[] args) throws Exception { 
     
    Properties properties = new Properties(); 
    properties.setProperty("mail.smtp.auth", "true");// 服務(wù)器需要認(rèn)證 
    properties.setProperty("mail.transport.protocol", "smtp");// 聲明發(fā)送郵件使用的端口 
    properties.setProperty("mail.host", "smtp.126.com");// 發(fā)送郵件的服務(wù)器地址 
     
    Session session = Session.getInstance(properties, new Authenticator() { 
      String sendUserName = "wangxiangpan@126.com"; 
      String sendPassword = "pwd"; 
      protected PasswordAuthentication getPasswordAuthentication() { 
        return new PasswordAuthentication(sendUserName, 
            sendPassword); 
      } 
    }); 
    session.setDebug(true); 
     
    MimeMessage msg = new MimeMessage(session);// 聲明一個(gè)郵件體 
    msg.setFrom(new InternetAddress("/""+MimeUtility.encodeText("Mr XP.Wang")+"/"<wangxiangpan@126.com>")); 
    msg.setSubject("這是我的第一份復(fù)雜郵件");//設(shè)置郵件主題 
    msg.setRecipients(MimeMessage.RecipientType.TO, InternetAddress.parse(MimeUtility.encodeText("王翔攀")+"<wangxiangpan@126.com>,"+MimeUtility.encodeText("三毛")+"<492134880@qq.com>")); 
 
    MimeMultipart msgMultipart = new MimeMultipart("mixed");// 標(biāo)明郵件的組合關(guān)系,混合的關(guān)系 
    msg.setContent(msgMultipart);// 設(shè)置郵件體 
     
 
    MimeBodyPart attch1 = new MimeBodyPart();// 附件1 
    MimeBodyPart attch2 = new MimeBodyPart();// 附件2 
    MimeBodyPart content = new MimeBodyPart();// 郵件的正文,混合體(圖片+文字) 
 
    // 將附件和正文設(shè)置到這個(gè)郵件體中 
    msgMultipart.addBodyPart(attch1); 
    msgMultipart.addBodyPart(attch2); 
    msgMultipart.addBodyPart(content); 
     
 
    // 設(shè)置第一個(gè)附件 
    DataSource ds1 = new FileDataSource("F:/ACCP5.0/文件/ssh配置.txt");// 指定附件的數(shù)據(jù)源 
    DataHandler dh1 = new DataHandler(ds1);// 附件的信息 
    attch1.setDataHandler(dh1);// 指定附件 
    attch1.setFileName("ssh.txt"); 
 
    // 設(shè)置第二個(gè)附件 
    DataSource ds2 = new FileDataSource("resource/48.jpg");// 指定附件的數(shù)據(jù)源 
    DataHandler dh2 = new DataHandler(ds2);// 附件的信息 
    attch2.setDataHandler(dh2);// 指定附件 
    attch2.setFileName("48.jpg"); 
 
    //設(shè)置郵件的正文 
    MimeMultipart bodyMultipart = new MimeMultipart("related");//依賴關(guān)系 
    content.setContent(bodyMultipart);//指定正文 
    MimeBodyPart htmlPart = new MimeBodyPart(); 
    MimeBodyPart gifPart = new MimeBodyPart(); 
    bodyMultipart.addBodyPart(htmlPart); 
    bodyMultipart.addBodyPart(gifPart); 
     
     
    DataSource gifds = new FileDataSource("resource/48.jpg");//正文的圖片 
    DataHandler gifdh = new DataHandler(gifds); 
    gifPart.setHeader("Content-Location", "http://mimg.126.net/logo/126logo.gif"); 
    gifPart.setDataHandler(gifdh);//設(shè)置正文的圖片 
     
    htmlPart.setContent("我只是來(lái)打醬油的,這是我的形象照!<img src="/" mce_src="/""http://mimg.126.net/logo/126logo.gif/">", "text/html;charset=gbk");//設(shè)置正文文字 
     
    msg.saveChanges();//保存郵件 
     
    //將郵件保存成文件 
    OutputStream ops = new FileOutputStream("C:/Users/Administrator/Desktop/test.eml"); 
    msg.writeTo(ops); 
    ops.close(); 
     
    Transport.send(msg); 
     
     
 
  } 
 
} 

收取郵件
示例:Rose 收取最近一封郵件。

import java.util.Date;
import java.util.Properties;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Store;

public class FetchMail {

  public static void main(String[] args) {
    String protocol = "pop3";
    boolean isSSL = true;
    String host = "pop.163.com";
    int port = 995;
    String username = "rose@163.com";
    String password = "rose";

    Properties props = new Properties();
    props.put("mail.pop3.ssl.enable", isSSL);
    props.put("mail.pop3.host", host);
    props.put("mail.pop3.port", port);

    Session session = Session.getDefaultInstance(props);

    Store store = null;
    Folder folder = null;
    try {
      store = session.getStore(protocol);
      store.connect(username, password);

      folder = store.getFolder("INBOX");
      folder.open(Folder.READ_ONLY);

      int size = folder.getMessageCount();
      Message message = folder.getMessage(size);

      String from = message.getFrom()[0].toString();
      String subject = message.getSubject();
      Date date = message.getSentDate();

      System.out.println("From: " + from);
      System.out.println("Subject: " + subject);
      System.out.println("Date: " + date);
    } catch (NoSuchProviderException e) {
      e.printStackTrace();
    } catch (MessagingException e) {
      e.printStackTrace();
    } finally {
      try {
        if (folder != null) {
          folder.close(false);
        }
        if (store != null) {
          store.close();
        }
      } catch (MessagingException e) {
        e.printStackTrace();
      }
    }

    System.out.println("接收完畢!");
  }
}

相關(guān)文章

  • JAVA面向?qū)ο?封裝原理及實(shí)例解析

    JAVA面向?qū)ο?封裝原理及實(shí)例解析

    這篇文章主要介紹了JAVA面向?qū)ο?封裝原理及實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • SpringBoot集成 Prometheus進(jìn)行高效監(jiān)控的實(shí)現(xiàn)

    SpringBoot集成 Prometheus進(jìn)行高效監(jiān)控的實(shí)現(xiàn)

    Prometheus作為一個(gè)開(kāi)源的監(jiān)控和告警工具,以其強(qiáng)大的數(shù)據(jù)采集、存儲(chǔ)和查詢能力,受到了眾多開(kāi)發(fā)者的青睞,本文主要介紹了SpringBoot集成 Prometheus進(jìn)行高效監(jiān)控的實(shí)現(xiàn),感興趣的可以了解一下
    2024-07-07
  • Java中YYYY-MM-dd與yyyy-MM-dd的區(qū)別及跨年問(wèn)題

    Java中YYYY-MM-dd與yyyy-MM-dd的區(qū)別及跨年問(wèn)題

    YYYY-MM-dd可能會(huì)導(dǎo)致跨年周的日期被歸屬到錯(cuò)誤的年份, yyyy-MM-dd總是表示實(shí)際的日歷年份,無(wú)論日期所在的周是否跨年,本文就來(lái)介紹一下兩者的區(qū)別,感興趣的可以了解一下
    2024-01-01
  • Java環(huán)境中MyBatis與Spring或Spring MVC框架的集成方法

    Java環(huán)境中MyBatis與Spring或Spring MVC框架的集成方法

    和MyBatis類似,Spring或者Spring MVC框架在Web應(yīng)用程序的運(yùn)作中同樣主要負(fù)責(zé)處理數(shù)據(jù)庫(kù)事務(wù),這里我們就來(lái)看一下Java環(huán)境中MyBatis與Spring或Spring MVC框架的集成方法
    2016-06-06
  • 往DAO類中注入@PersistenceContext和@Resource的區(qū)別詳解

    往DAO類中注入@PersistenceContext和@Resource的區(qū)別詳解

    這篇文章主要介紹了往DAO類中注入@PersistenceContext和@Resource的區(qū)別詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • java int類型二維數(shù)組實(shí)現(xiàn)“楊輝三角”的完整實(shí)例

    java int類型二維數(shù)組實(shí)現(xiàn)“楊輝三角”的完整實(shí)例

    這篇文章主要給大家介紹了關(guān)于java int類型二維數(shù)組實(shí)現(xiàn)“楊輝三角”的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 一文詳解Java中字符串的基本操作

    一文詳解Java中字符串的基本操作

    這篇文章主要為大家詳細(xì)介紹了Java中字符串的基本操作,例如遍歷、統(tǒng)計(jì)次數(shù),拼接和反轉(zhuǎn)等以及String的常用方法,感興趣的可以了解一下
    2022-08-08
  • Mybatis 中 Oracle 的拼接模糊查詢及用法詳解

    Mybatis 中 Oracle 的拼接模糊查詢及用法詳解

    這篇文章主要介紹了Mybatis 中 Oracle 的拼接模糊查詢及用法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-08-08
  • 淺談java web中常用對(duì)象對(duì)應(yīng)的實(shí)例化接口

    淺談java web中常用對(duì)象對(duì)應(yīng)的實(shí)例化接口

    下面小編就為大家?guī)?lái)一篇淺談java web中常用對(duì)象對(duì)應(yīng)的實(shí)例化接口。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • java實(shí)現(xiàn)二維數(shù)組轉(zhuǎn)置的方法示例

    java實(shí)現(xiàn)二維數(shù)組轉(zhuǎn)置的方法示例

    這篇文章主要介紹了java實(shí)現(xiàn)二維數(shù)組轉(zhuǎn)置的方法,結(jié)合實(shí)例形式詳細(xì)分析了java二維數(shù)組轉(zhuǎn)置的原理、實(shí)現(xiàn)步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2017-10-10

最新評(píng)論

黔西| 修文县| 衢州市| 凤庆县| 雷州市| 砀山县| 景德镇市| 和政县| 景泰县| 互助| 威信县| 兰西县| 唐山市| 长沙市| 霍城县| 佳木斯市| 贵州省| 台北县| 海阳市| 西和县| 新蔡县| 铜川市| 兴宁市| 德江县| 新宾| 曲沃县| 高青县| 江安县| 怀柔区| 海兴县| 庆安县| 瓦房店市| 西峡县| 忻城县| 勐海县| 涞源县| 敖汉旗| 衡水市| 侯马市| 育儿| 乌苏市|