问题描述
我正在使用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 = "[email protected]";// 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一次又一次地读取邮件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!