我正在尝试使用google找到的此代码,但它没有连接到我的gmail收件箱。为什么呢?
我有以下错误消息:
--------------processing mails started----------------- getting the session for accessing email. Not able to process the mail reading. javax.mail.MessagingException: Connection timed out: connect; nested exception is: java.net.ConnectException: Connection timed out: connect at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:618) at javax.mail.Service.connect(Service.java:291) at javax.mail.Service.connect(Service.java:172) at readEmails.processMail(readEmails.java:47) at readEmails.(readEmails.java:19) at readEmails.main(readEmails.java:165) Caused by: java.net.ConnectException: Connection timed out: connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(Unknown Source) at java.net.PlainSocketImpl.connectToAddress(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:284) at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:227) at com.sun.mail.iap.Protocol.(Protocol.java:109) at com.sun.mail.imap.protocol.IMAPProtocol.(IMAPProtocol.java:104) at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:585)
代码是:
import javax.mail.AuthenticationFailedException;
import javax.mail.Folder;
import javax.mail.FolderClosedException;
import javax.mail.FolderNotFoundException;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.NoSuchProviderException;
import javax.mail.Part;
import javax.mail.ReadOnlyFolderException;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.StoreClosedException;
import javax.mail.internet.InternetAddress;
public class readEmails {
//Constructor Call
public readEmails() {
processMail();
}
//Responsible for printing Data to Console
private void printData(String data) {
System.out.println(data);
}
public void processMail() {
Session session = null;
Store store = null;
Folder folder = null;
Message message = null;
Message[] messages = null;
Object messagecontentObject = null;
String sender = null;
String subject = null;
Multipart multipart = null;
Part part = null;
String contentType = null;
try {
printData("--------------processing mails started-----------------");
session = Session.getDefaultInstance(System.getProperties(), null);
printData("getting the session for accessing email.");
store = session.getStore("imap");
store.connect("imap.gmail.com","myemail@gmail.com","mypassword");
printData("Connection established with IMAP server.");
// Get a handle on the default folder
folder = store.getDefaultFolder();
printData("Getting the Inbox folder.");
// Retrieve the "Inbox"
folder = folder.getFolder("inbox");
//Reading the Email Index in Read / Write Mode
folder.open(Folder.READ_WRITE);
// Retrieve the messages
messages = folder.getMessages();
// Loop over all of the messages
for (int messageNumber = 0; messageNumber < messages.length; messageNumber++) {
// Retrieve the next message to be read
message = messages[messageNumber];
// Retrieve the message content
messagecontentObject = message.getContent();
// Determine email type
if (messagecontentObject instanceof Multipart) {
printData("Found Email with Attachment");
sender = ((InternetAddress) message.getFrom()[0]).getPersonal();
// If the "personal" information has no entry, check the address for the sender information
printData("If the personal information has no entry, check the address for the sender information.");
if (sender == null) {
sender = ((InternetAddress) message.getFrom()[0]).getAddress();
printData("sender in NULL. Printing Address:" + sender);
}
printData("Sender -." + sender);
// Get the subject information
subject = message.getSubject();
printData("subject=" + subject);
// Retrieve the Multipart object from the message
multipart = (Multipart) message.getContent();
printData("Retrieve the Multipart object from the message");
// Loop over the parts of the email
for (int i = 0; i < multipart.getCount(); i++) {
// Retrieve the next part
part = multipart.getBodyPart(i);
// Get the content type
contentType = part.getContentType();
// Display the content type
printData("Content: " + contentType);
if (contentType.startsWith("text/plain")) {
printData("---------reading content type text/plain mail -------------");
} else {
// Retrieve the file name
String fileName = part.getFileName();
printData("retrive the fileName="+ fileName);
}
}
} else {
printData("Found Mail Without Attachment");
sender = ((InternetAddress) message.getFrom()[0]).getPersonal();
// If the "personal" information has no entry, check the address for the sender information
printData("If the personal information has no entry, check the address for the sender information.");
if (sender == null) {
sender = ((InternetAddress) message.getFrom()[0]).getAddress();
printData("sender in NULL. Printing Address:" + sender);
}
// Get the subject information
subject = message.getSubject();
printData("subject=" + subject);
}
}
// Close the folder
folder.close(true);
// Close the message store
store.close();
} catch(AuthenticationFailedException e) {
printData("Not able to process the mail reading.");
e.printStackTrace();
} catch(FolderClosedException e) {
printData("Not able to process the mail reading.");
e.printStackTrace();
} catch(FolderNotFoundException e) {
printData("Not able to process the mail reading.");
e.printStackTrace();
} catch(NoSuchProviderException e) {
printData("Not able to process the mail reading.");
e.printStackTrace();
} catch(ReadOnlyFolderException e) {
printData("Not able to process the mail reading.");
e.printStackTrace();
} catch(StoreClosedException e) {
printData("Not able to process the mail reading.");
e.printStackTrace();
} catch (Exception e) {
printData("Not able to process the mail reading.");
e.printStackTrace();
}
}
//Main Function for The readEmail Class
public static void main(String args[]) {
//Creating new readEmail Object
readEmails readMail = new readEmails();
//Calling processMail Function to read from IMAP Account
readMail.processMail();
}
}
答案 0 :(得分:2)
您正在使用协议imap
(没有SSL的IMAP)进行连接,这是GMail不支持的。您需要使用imaps
(带有SSL的IMAP)。