【发布时间】:2014-04-10 09:34:36
【问题描述】:
Java 中的我的邮件接收程序 我在我的 java 程序中使用 mail.1.4.jar 和 activation jar
我遵循了 5 个步骤来使用 JavaMail API 接收电子邮件。
他们是:
获取会话对象
创建 POP3 存储对象并与弹出服务器连接
创建文件夹对象并打开它
从数组中的文件夹中检索消息并打印它
关闭存储和文件夹对象
这是我的代码:
public class receive_Email {
public static void main(String[] args) {
String host="pop.gmail.com";
String mailStorType="pop3";
String Username="***********@gmail.com";
String Password="*******";
receiveMail(host, mailStorType, Username, Password);
}
// method for Receive email.....!
public static void receiveMail(String pop3Host,String sotreType,String user,String password){
/// 1) get session object
Properties props=new Properties();
props.put("mail.pop3.host", pop3Host );
Session sessEmail=Session.getDefaultInstance(props);
// 2) create pop3 store object and connect with pop server
try {
POP3Store emailStore=(POP3Store)sessEmail.getStore(sotreType);
emailStore.connect(user,password);
// 3) create Folder object and open it
Folder emailFolder=emailStore.getFolder("INBOX");
emailFolder.open(Folder.READ_ONLY);
// 4) Retrieve the messages in the folder and display it
Message[] messages=emailFolder.getMessages();
int i=0;
for(Message m : messages){
System.out.println("------------------------------------------------");
System.out.println("Email Number : "+m.getMessageNumber());
System.out.println("Subject : "+m.getSubject());
System.out.println("From : "+m.getFrom());
try {
System.out.println("Subject : "+m.getContent().toString());
} catch (IOException e) {
System.out.println("No messages are available.............!");
e.printStackTrace();
}
} // end for loop
// 5) Close the Folder and email store
emailFolder.close(false);
emailStore.close();
} catch (NoSuchProviderException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
我得到的例外是:
javax.mail.MessagingException: Connect failed;
nested exception is:
java.net.ConnectException: Connection timed out: connect
at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:148)
at javax.mail.Service.connect(Service.java:275)
at javax.mail.Service.connect(Service.java:156)
at javax.mail.Service.connect(Service.java:176)
at com.mwh.DBConnect.receive_Email.receiveMail(receive_Email.java:37)
at com.mwh.DBConnect.receive_Email.main(receive_Email.java:22)
Caused by: java.net.ConnectException: Connection timed out: connect
.....
..
任何摆脱此异常的建议...在此先感谢....
【问题讨论】:
-
您是否在邮件设置中启用了弹出功能?签出此link
-
使用
Session.getInstance()代替Session.getDefaultInstance()oracle.com/technetwork/java/faq-135477.html#getdefaultinstance -
我们是否需要为此拥有一个 PoP3 电子邮件帐户....?