我试图访问我的办公室的代理服务器以对一个项目的电子邮件的IMAP服务器(由办公室管理员管理的gmail)进行身份验证。我们没有直接访问邮件服务器的权限,唯一可以连接到它的方法是使用代理服务器。我想从我的gmail收件箱中读取电子邮件,但是它总是抛出错误,提示javax.mail.MessagingException:连接重置;我想连接到代理服务器,但直接连接到imap服务器。如何在代码中正确配置代理设置?我正在使用javax.mail 1.6.2版本。
我试图设置代理,但是我想我的代码中缺少某些东西来认证代理服务器。不知何故没有连接代理服务器。我可以使用我的家庭网络阅读电子邮件,但是我却无法从办公室阅读。
public class GmailInbox {
private static final String AGENT = "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)";
private Proxy proxy;
public static void main(String[] args) {
GmailInbox gmail = new GmailInbox();
gmail.setProxy("8.8.8.8", 8080);
gmail.read();
}
public void setProxy(String ip, int port) {
this.proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(ip, port));
}
public void read() {
String host = "imap.gmail.com";// change accordingly
String mailStoreType = "imap";
String username = "johndoe@officeserverforgmail.com";// change accordingly
String password = "123456";// change accordingly
try {
Properties properties = new Properties();
properties.put("mail.imap.host", host);
properties.put("mail.imap.port", "993");
properties.put("mail.imap.ssl.enable", true);
Session session = Session.getDefaultInstance(properties, null);
session.setDebug(true);
Store store = session.getStore("imap");
store.connect(host, username, password);
Folder inbox = store.getFolder("inbox");
inbox.open(Folder.READ_ONLY);
int messageCount = inbox.getMessageCount();
System.out.println("Total messages: " + messageCount);
Message[] messages = inbox.getMessages();
System.out.println("------------------------------");
for(int i =0, n = 10; i< n; i++) {
System.out.println("Mail subject: " + messages[i].getSubject());
}
inbox.close(true);
store.close();
} catch (NoSuchProviderException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
我希望输出将是带有主题的电子邮件。但它显示此错误:
DEBUG IMAPS: trying to connect to host "imap.gmail.com", port 993, isSSL true
javax.mail.MessagingException: Connection reset;