如何使用Java Mail(javax.mail)访问代理服务器?

时间:2019-06-01 05:26:35

标签: java proxy gmail javamail imap

我试图访问我的办公室的代理服务器以对一个项目的电子邮件的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;

0 个答案:

没有答案