您好我想写一个java程序,我将提供我的电子邮件ID和密码。我想阅读所有到达该电子邮件ID的新未读邮件。我不知道如何为此编写程序。
以下程序适用于Gmail。但它不适用于yahoomail,因为没有配置yahoo pop3。我想要一个适用于所有电子邮件ID的通用代码。
import java.io.*;
import java.util.*;
import javax.mail.*;
public class ReadMail {
public static void main(String args[]) throws Exception {
// String host = "pop.gmail.com";
// String user = "xyz";
// String password = "12345";
// Get system properties
Properties properties = System.getProperties();
// Get the default Session object.
Session session = Session.getDefaultInstance(properties, null);
// Get a Store object that implements the specified protocol.
Store store = session.getStore("pop3s");
//Connect to the current host using the specified username and password.
store.connect(host, user, password);
//Create a Folder object corresponding to the given name.
Folder folder = store.getFolder("inbox");
// Open the Folder.
folder.open(Folder.READ_ONLY);
Message[] message = folder.getMessages();
// Display message.
for (int i = 0; i < message.length; i++) {
System.out.println("------------ Message " + (i + 1) + " ------------");
System.out.println("SentDate : " + message[i].getSentDate());
System.out.println("From : " + message[i].getFrom()[0]);
System.out.println("Subject : " + message[i].getSubject());
System.out.print("Message : ");
InputStream stream = message[i].getInputStream();
while (stream.available() != 0) {
System.out.print((char) stream.read());
}
System.out.println();
}
folder.close(true);
store.close();
}
}
答案 0 :(得分:1)
您需要javax.mail包及其文档。阅读文档。那你知道吗
答案 1 :(得分:1)
您需要了解的不仅仅是login-pass。例如邮件服务器地址,邮件服务器类型,连接端口等。 您应该查看Java Mail API或Commons Email。
<强> UPD:强>
使用Session
方法创建Session.getDefaultInstance()
(使用连接Properties
对象和身份验证器),使用{{1}从此Store
获取Session
方法,使用Session.getStore()
方法从该商店获取Folder
,使用Store.getFolder("FOLDER_NAME")
方法打开Folder
,并使用{{1}之类的内容获取所有消息}
这就是您要找的东西吗?
<强> UPD2:强>
使用服务器路径,用户ID和密码,根本无法编写可与任何邮件提供商一起使用的通用程序。因为不同的邮件服务器配置不同。他们在不同的端口上讨论不同的协议(imap / pop3 / pop3 ssl)。总有一些人将他的邮件服务器配置为仅在31337端口上通过ssl与imap通话,所有其他端口和协议都被禁止。这家伙打破了你的计划。因此,您必须在Folder.open(Folder.READ)
对象中指定所有这些属性。查看here的属性,您必须指定。
<强> UPD3:强>
第二个想法,你实际上有一个选择。只需尝试使用不同的协议连接到服务器。如果这没有帮助,请开始迭代端口。适合的是您的配置。 如果这真的是你想要的。
答案 2 :(得分:0)
有两种方法可以做到:
1)Google提供API来访问您可以使用该库的邮件,该库可以更好地控制您的邮件。见这里:http://code.google.com/apis/gmail/。以同样的方式尝试其他电子邮件提供商。
2)简单的邮件客户端(您可以轻松地使用谷歌搜索),但您需要查看标题以识别哪些邮件是已读/未读等。
答案 3 :(得分:0)
您需要一个注册表,您可以在其中获取给定邮件服务的属性。
例如,您可以指定包含主机,端口,协议等的.properties文件的名称,而不是指定pop3主机...
如果您的.properties文件包含协议,例如mail.store.protocol = pop3,您可以使用session.getStore()(不带参数),相同的代码可以用于pop3,imap,pop3s, IMAPS。