国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Java使用JavaMail API發送和接收郵件的代碼示例

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

2020-05-17 14:10it_wangxiangpan JAVA教程

JavaMail是Oracle甲骨文開發的Java郵件類API,支持多種郵件協議,這里我們就來看一下Java使用JavaMail API發送和接收郵件的代碼示例

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

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

發送郵件

下邊,我先列出使用Java發送郵件的最簡單的一個小測試示例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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服務器(端口995)SMTP服務器(端口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");//服務器需要認證
    properties.setProperty("mail.transport.protocol", "smtp");//聲明發送郵件使用的端口
     
    Session session = Session.getInstance(properties);
    session.setDebug(true);//同意在當前線程的控制臺打印與服務器對話信息
     
    Message message = new MimeMessage(session);//構建發送的信息
    message.setText("你好,我是Champion.Wong!");//信息內容
    message.setFrom(new InternetAddress("wangxiangpan@126.com"));//發件人
     
    Transport transport = session.getTransport();
    transport.connect("smtp.126.com", 25, sendUserName, sendPassword);//連接發件人使用發件的服務器
    transport.sendMessage(message, new Address[]{new InternetAddress("492134880@qq.com")});//接受郵件
    transport.close();
  }
 
}

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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 發送郵件
 * @author Champion Wong
 * Message.addRecipient(Message.Recipient recipient, Address address); 發郵件的時候指定收件人和收件人的角色
 * Message.RecipientType.TO 收件人
 * Message.RecipientType.CC 抄送,即發郵件的時候順便給另一個人抄一份,不用回復!但是,上邊的收件人可以看到你都抄送給了誰
 * Message.RecipientType.BCC 暗送,也是發郵件的時候順便給另一個人暗發一份,但是,不同于上邊的是,收件人不能看到你都暗送給了誰
 *
 */
public class Demo2 extends TestCase {
 
  private static final String sendUserName = "wangxiangpan@126.com";// 發送郵件需要連接的服務器的用戶名
 
  private static final String sendPassword = "pwd";// 發送郵件需要連接的服務器的密碼
 
  private static final String sendProtocol = "smtp";// 發送郵件使用的端口
 
  private static final String sendHostAddress = "smtp.126.com";// 發送郵件使用的服務器的地址
 
  public void test() throws AddressException, MessagingException {
 
    Properties properties = new Properties();
    properties.setProperty("mail.smtp.auth", "true");// 服務器需要認證
    properties.setProperty("mail.transport.protocol", sendProtocol);// 聲明發送郵件使用的端口
    properties.setProperty("mail.host", sendHostAddress);// 發送郵件的服務器地址
 
    Session session = Session.getInstance(properties, new Authenticator() {
      protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(sendUserName, sendPassword);
      }
    });
    session.setDebug(true);//在后臺打印發送郵件的實時信息
 
    Message message = new MimeMessage(session);
    message.setFrom(new InternetAddress("wangxiangpan@126.com"));
    message.setSubject("Demo2JavaCode發送郵件測試,采用Authenticator");// 設置主題
    message.setRecipients(Message.RecipientType.TO, InternetAddress
        .parse("492134880@qq.com,wangxiangpan@126.com"));// 發送
    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">如果您看到,證明測試成功了!</span>",
            "text/html;charset=gbk");
 
    Transport.send(message);//發送郵件
  }
}

我們發送一個比較復雜的郵件,包括附件,圖文:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
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,定義了增加及刪除電子郵件各部分內容的方法,
 *        但是其是抽象類,需要其子類MimeMultipart來時用MimeMessage對象
 * MimeBodyPart 是BodyPart具體用于mimeMessage的一個子類,MimeBodyPart對象代表一個
 *       mimeMultipart對象的每一個部分
 * MimeUtility.encodeText(String cn)用于解決郵件中的頭部信息中中文的亂碼問題
 *
 */
public class Demo3_test {
 
  public static void main(String[] args) throws Exception {
     
    Properties properties = new Properties();
    properties.setProperty("mail.smtp.auth", "true");// 服務器需要認證
    properties.setProperty("mail.transport.protocol", "smtp");// 聲明發送郵件使用的端口
    properties.setProperty("mail.host", "smtp.126.com");// 發送郵件的服務器地址
     
    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);// 聲明一個郵件體
    msg.setFrom(new InternetAddress("/""+MimeUtility.encodeText("Mr XP.Wang")+"/"<wangxiangpan@126.com>"));
    msg.setSubject("這是我的第一份復雜郵件");//設置郵件主題
    msg.setRecipients(MimeMessage.RecipientType.TO, InternetAddress.parse(MimeUtility.encodeText("王翔攀")+"<wangxiangpan@126.com>,"+MimeUtility.encodeText("三毛")+"<492134880@qq.com>"));
 
    MimeMultipart msgMultipart = new MimeMultipart("mixed");// 標明郵件的組合關系,混合的關系
    msg.setContent(msgMultipart);// 設置郵件體
     
 
    MimeBodyPart attch1 = new MimeBodyPart();// 附件1
    MimeBodyPart attch2 = new MimeBodyPart();// 附件2
    MimeBodyPart content = new MimeBodyPart();// 郵件的正文,混合體(圖片+文字)
 
    // 將附件和正文設置到這個郵件體中
    msgMultipart.addBodyPart(attch1);
    msgMultipart.addBodyPart(attch2);
    msgMultipart.addBodyPart(content);
     
 
    // 設置第一個附件
    DataSource ds1 = new FileDataSource("F:/ACCP5.0/文件/ssh配置.txt");// 指定附件的數據源
    DataHandler dh1 = new DataHandler(ds1);// 附件的信息
    attch1.setDataHandler(dh1);// 指定附件
    attch1.setFileName("ssh.txt");
 
    // 設置第二個附件
    DataSource ds2 = new FileDataSource("resource/48.jpg");// 指定附件的數據源
    DataHandler dh2 = new DataHandler(ds2);// 附件的信息
    attch2.setDataHandler(dh2);// 指定附件
    attch2.setFileName("48.jpg");
 
    //設置郵件的正文
    MimeMultipart bodyMultipart = new MimeMultipart("related");//依賴關系
    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);//設置正文的圖片
     
    htmlPart.setContent("我只是來打醬油的,這是我的形象照!<img src="/" mce_src="/""http://mimg.126.net/logo/126logo.gif/">", "text/html;charset=gbk");//設置正文文字
     
    msg.saveChanges();//保存郵件
     
    //將郵件保存成文件
    OutputStream ops = new FileOutputStream("C:/Users/Administrator/Desktop/test.eml");
    msg.writeTo(ops);
    ops.close();
     
    Transport.send(msg);
     
     
 
  }
 
}

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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("接收完畢!");
  }
}

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产成人精品久久二区二区 | 曰韩中文字幕 | 久国产精品韩国三级视频 | 亚洲一区二区三区中文字幕 | 日韩在线永久免费播放 | 亚洲一区中文字幕在线观看 | 亚洲精品久久久久久一区二区 | 天天干天天操天天干 | 午夜激情视频在线观看 | 亚洲好看站| 一区二区三区精品 | 日韩欧美一区视频 | 日韩精品一区二区在线观看 | 青青草原综合久久大伊人精品 | 欧美日韩精品一区二区三区蜜桃 | 亚洲美女久久 | 亚洲人成在线播放 | 亚洲一区成人在线观看 | 在线视频一区二区 | 欧美黄色网 | 国内激情自拍 | 久久精品一级毛片 | 水卜樱一区二区av | 成人精品在线观看 | 国产成人在线一区 | 亚洲久久久久 | 国产精品欧美一区二区三区不卡 | 国产精品久久久久久久久 | 日韩一区二区三区在线观看 | 久久久精选| 久久综合九色 | 蜜桃av噜噜一区二区三区小说 | 成人精品久久久 | 91欧美激情一区二区三区成人 | 日韩精品99久久久久中文字幕 | 久久国产亚洲精品 | 久久国产精品一区二区 | 亚洲国产精品久久久 | 久久视频在线看 | 日韩在线精品视频 | 欧美精品久久久久 |