Привет!
Разбираю эту же тему.
Столкнулся с проблемой, Java mail не хочет конектится к Gmail хосту.
StackTrace:
[code]java.net.ConnectException: Connection timed out: connect
at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:210)
at javax.mail.Service.connect(Service.java:295)
at javax.mail.Service.connect(Service.java:176)
at com.epam.cara.core.mail.ReadMail.getMessages(ReadMail.java:34)
at com.epam.cara.core.mail.ReadMailTest.testReservation(ReadMailTest.java:15)
Caused by: java.net.ConnectException: Connection timed out:
connect at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:319)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:233)
at com.sun.mail.pop3.Protocol.<init>(Protocol.java:111)
at com.sun.mail.pop3.POP3Store.getPort(POP3Store.java:261)
at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:206) [/code]
Код:
[code]package com.epam.cara.core.mail;
import java.io.*;
import java.util.*;
import javax.mail.*;
import javax.mail.Flags.Flag;
import javax.mail.search.*;
public class ReadMail {
private String host = "www.gmail.com";
private String user = "test";
private String password = "password";
public Message[] getMessages(String sFrom, Boolean bSEEN) throws MessagingException, IOException {
Message[] messages = null;
// Get system properties
Properties properties = System.getProperties();
// Get the default Session object.
Session session = Session.getDefaultInstance(properties);
// Get a Store object that implements the specified protocol.
Store store = session.getStore("pop3");
//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);
try {
if (!folder.isOpen()){
folder.open(Folder.READ_ONLY);
}
SearchTerm totalTerm = new FromStringTerm(sFrom);
if (bSEEN!=null){
FlagTerm flagSeen = new FlagTerm(new Flags(Flag.SEEN), bSEEN);
totalTerm = new AndTerm(flagSeen, totalTerm);
}
messages = folder.search(totalTerm);
} catch (MessagingException e) {
e.printStackTrace();
}
// Message[] message = folder.getMessages();
// Display message.
for (int i = 0; i < messages.length; i++) {
System.out.println("------------ Message " + (i + 1) + " ------------");
System.out.println("SentDate : " + messages[i].getSentDate());
System.out.println("From : " + messages[i].getFrom()[0]);
System.out.println("Subject : " + messages[i].getSubject());
System.out.print("Message : ");
InputStream stream = messages[i].getInputStream();
while (stream.available() != 0) {
System.out.print((char) stream.read());
}
System.out.println();
}
folder.close(true);
store.close();
return messages;
}
}
[/code]
Можно еще вопрос, откуда берется класс Gmail?
if (!Gmail.folder.isOpen()){
Gmail.folder.open(Folder.READ_ONLY);
}