前提・実現したいこと
サーバ上から、JavaMailを用い、Office365のメールを受信しています。
このたび、メール受信時のみプロキシを利用する必要が出てきて、
さらにそのプロキシアドレスをProxy.pacから取得しなければならなくなりました。
JavaMailでプロキシを利用することについては、How do I configure JavaMail to work through my proxy server?
を読む限り、JavaMail v1.6以降を利用することで解決できそうですが、肝心のProxy.pac
からのプロキシアドレス・ポートの取得で躓いています。
発生している問題・エラーメッセージ
ネットの情報を見る限り、Proxy.pacのJavaScriptを自前で解釈するか、
com.sun.deploy.net.proxy.* を利用することで出来そうな雰囲気でした。
前者はあまたの組み込みの関数に対応する必要がありそうなので、却下したい。。
後者については、参考になるページがあったので、以下のように試したのですが、
うまく解釈してくれていません。
以下の「試したこと」の内容では、適切ではないということでしょうか?
そもそも、私がやろうとしていることは無理があるのでしょうか?
試したこと
まずは普通のhttpプロトコルのプロキシをProxy.pac経由で取得できるか確認するため、
Microsoft社の「PAC ファイルについて」のサンプルを利用し、
以下のファイルを http://xxxxx/proxy/proxy.pac として参照できるよう配置しました。
javascript
1function FindProxyForURL (url, host) { 2 if (isPlainHostName(host)) { 3 return "DIRECT"; 4 } else { 5 if (shExpMatch(url, "http://www.bing.com/")) { 6 return "PROXY www.bing-proxy.com:6060"; 7 } else if (shExpMatch(url, "http://www.microsoft.com/")) { 8 return "PROXY www.microsoft-proxy.com:7070"; 9 } else { 10 return "PROXY www.other-proxy.com:8080"; 11 } 12 } 13}
で、How to use automatic proxy configuration script in Javaを参考にして、
http://www.bing.com/ へのアクセス時に利用するプロキシを取得しようとしましたが、DIRECTが返ってきます。。。
java
1import java.net.URL; 2 3import com.sun.deploy.net.proxy.BrowserProxyInfo; 4import com.sun.deploy.net.proxy.ProxyType; 5import com.sun.deploy.net.proxy.SunAutoProxyHandler; 6 7public class TestMain { 8 public static void main(String[] args) throws Exception { 9 String url = "http://www.bing.com/"; 10 String proxyPacUrl = "http://xxxxx/proxy/proxy.pac"; 11 BrowserProxyInfo b = new BrowserProxyInfo(); 12 b.setType(ProxyType.AUTO); 13 b.setAutoConfigURL(proxyPacUrl); 14 SunAutoProxyHandler handler = new SunAutoProxyHandler(); 15 handler.init(b); 16 com.sun.deploy.net.proxy.ProxyInfo[] ps = handler.getProxyInfo(new URL(url)); 17 for (com.sun.deploy.net.proxy.ProxyInfo p : ps) { 18 System.out.println(p.toString()); 19 } 20 } 21}
補足情報(FW/ツールのバージョンなど)
Java SDK 1.8 を利用しています。
あなたの回答
tips
プレビュー