2016-04-25 21 views
0

私はgmailから電子メールを読み取るプログラムを開発しています。このプログラムは、ユーザーの活動を監視するプロキシシステムを持っています。私は可能なすべてのソリューションを使用しようとしましたが、うまくいかないようです。どんな助けでも本当に感謝しています。あなたの助けを事前に感謝します。Javaはプロキシサーバーの背後にあるgmailから電子メールを読む

コード:

public MailReader() 
{ 
/* Set the mail properties */ 
Properties props = System.getProperties(); 
props.setProperty("mail.store.protocol", "imaps"); 
try 
{ 
/* Create the session and get the store for read the mail. */ 
Session session = Session.getDefaultInstance(props, null); 
Store store = session.getStore("imaps"); 
store.connect("imap.gmail.com","<EMAIL>", "<PASS>"); 

/* Mention the folder name which you want to read. */ 
inbox = store.getFolder("Inbox"); 
System.out.println("No of Unread Messages : " + inbox.getUnreadMessageCount()); 

/*Open the inbox using store.*/ 
inbox.open(Folder.READ_ONLY); 

/* Get the messages which is unread in the Inbox*/ 
Message messages[] = inbox.search(new FlagTerm(new Flags(Flag.SEEN), false)); 

/* Use a suitable FetchProfile */ 
FetchProfile fp = new FetchProfile(); 
fp.add(FetchProfile.Item.ENVELOPE); 
fp.add(FetchProfile.Item.CONTENT_INFO); 
inbox.fetch(messages, fp); 

try 
{ 
printAllMessages(messages); 
inbox.close(true); 
store.close(); 
} 
catch (Exception ex) 
{ 
System.out.println("Exception arise at the time of read mail"); 
ex.printStackTrace(); 
} 
} 
catch (NoSuchProviderException e) 
{ 
e.printStackTrace(); 
System.exit(1); 
} 
catch (MessagingException e) 
{ 
e.printStackTrace(); 
System.exit(2); 
} 
} 

流れるが、私が取得エラーコードです。 java.net.UnknownHostException

javax.mail.MessagingException: imap.gmail.com; 
    nested exception is: 
    java.net.UnknownHostException: imap.gmail.com 
    at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:665) 
    at javax.mail.Service.connect(Service.java:295) 
    at javax.mail.Service.connect(Service.java:176) 
    at javaapplication1.MailReader.<init>(MailReader.java:29) 
    at javaapplication1.MailReader.main(MailReader.java:149) 
Caused by: java.net.UnknownHostException: imap.gmail.com 
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184) 
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 
    at java.net.Socket.connect(Socket.java:589) 
    at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:668) 
    at sun.security.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:173) 
    at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:288) 
    at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:231) 
    at com.sun.mail.iap.Protocol.<init>(Protocol.java:113) 
    at com.sun.mail.imap.protocol.IMAPProtocol.<init>(IMAPProtocol.java:110) 
    at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:632) 
    ... 4 more 
+0

なぜですか?何が起こるのですか? – SLaks

+0

私たちにコードを教えてください –

+0

親愛なる@SLaks私はjava.net.UnknownHostExceptionを取得します。すなわち、 javaはgmailサーバーと通信できません。 – Anonymous

答えて

0

Here oracle say:

JavaMailのは、現在のWebプロキシサーバーを経由してメールサーバへのアクセスをサポートしていません。
...
プロキシサーバーがSOCKS V4またはV5プロトコル(http://www.socks.nec.com/aboutsocks.html、RFC1928)をサポートし、匿名接続を許可し、JDK 1.5以降およびJavaMail 1.4.5以降を使用している場合は、SOCKS com.sun.mail.smtpパッケージのjavadocで説明されているように、「mail.smtp.socks.host」プロパティーを設定することにより、セッションごと、プロトコルごとにプロキシを設定できます。 "imap"と "pop3"プロトコルにも同様のプロパティがあります。

関連する問題