使用Java中的JavaMail Api从gmail一次又一次地读取邮件 [英] Read mails again and again from gmail using JavaMail Api in java

查看:84
本文介绍了使用Java中的JavaMail Api从gmail一次又一次地读取邮件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用JavaMail Api从gmail帐户读取邮件.但是问题是我只能阅读一次.有什么办法可以一遍又一遍地阅读邮件吗?
我的Java代码是:

I am using JavaMail Api to read mails from gmail account. But problem is that I can read it only once. Is there any way to read the mails again and again???
My Java Code is :

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

public class Main {

    // main function. Project run starts from main function...
   public static void main(String[] args) {

      String host = "pop.gmail.com";// change accordingly
      String mailStoreType = "pop3";
      String username = "your_email@gmail.com";// change accordingly
      String password = "your_password";// change accordingly

      check(host, mailStoreType, username, password);
   }


   // function to make connection and get mails from server known as "Pop" server
   public static void check(String host, String storeType, String user, String password) 
   {
      try {

      //create properties field
      Properties properties = new Properties();

      properties.put("mail.pop3.host", host);
      properties.put("mail.pop3.port", "995");
      properties.put("mail.pop3.starttls.enable", "true");
      Session emailSession = Session.getDefaultInstance(properties);

      //create the POP3 store object and connect with the pop server
      Store store = emailSession.getStore("pop3s");

      store.connect(host, user, password);

      //create the folder object and open it
      Folder emailFolder = store.getFolder("Inbox");

      emailFolder.open(Folder.READ_ONLY);

      // retrieve the messages from the folder in an array and print it
      Message[] messages = emailFolder.getMessages();
      System.out.println("messages.length---" + messages.length);

      for (int i = 0, n = messages.length; i < n; i++) {
         Message message = messages[i];


         Object obj = message.getContent();
         Multipart mp = (Multipart)obj;
         BodyPart bp = mp.getBodyPart(0);


         System.out.println("---------------------------------");
         System.out.println("Email Number " + (i + 1));
         System.out.println("Subject: " + message.getSubject());
         System.out.println("From: " + message.getFrom()[0]);
         System.out.println("To: " + message.getAllRecipients().toString());
         System.out.println("Received Date:" + message.getReceivedDate());
         System.out.println("Text: " + bp.getContent().toString());
      }

      //close the store and folder objects
      emailFolder.close(false);
      store.close();

      } catch (NoSuchProviderException e) {
         e.printStackTrace();
      } catch (MessagingException e) {
         e.printStackTrace();
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
} 

在这段代码中,我使用流行服务器从中读取电子邮件,现在我在其中输入电子邮件和密码并运行.它工作正常,但只读取一封电子邮件,下一次,如果我运行program,则kit给我的消息数等于0 ... 我想一次又一次地阅读消息... 任何帮助将不胜感激...

In this code I am using pop server to read emails from and now I give email and password in it and run. It works fine but it reads an email once only, next time if I run program , kit gives me number of messages equal to 0... I want to read messages again and again as many times as I want... Any help will be appreciated...

推荐答案

如果您希望每次都获取所有电子邮件,则IMAP服务器将是最好的选择.

If you want to get All Emails every time, IMAP sever will be best for it.

您可以将邮件服务器更改为

You can change the mail server to

IMAP.gmail.com

IMAP.gmail.com

,端口将为993(考虑到您使用的是Gmail帐户).

and the port will be 993 (considering you are using gmail account).

提供的链接旁门将是您的最佳示例.

The Link sidgate provided will be best example for you.

这篇关于使用Java中的JavaMail Api从gmail一次又一次地读取邮件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆