0

次のように、メール(SMTPプロトコル)の送信にjavamailを使用しています

String host = "smtp.gmail.com";
:
props.put("mail.smtp.auth", "true");

props.put("mail.smtp.socks.host","sock_proxy_host");
props.put("mail.smtp.socks.port","sock_proxy_port");

Session session = Session.getInstance(props,new javax.mail.Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("..", "..");
        }
});

しかし、私が使用しているソックス プロキシには基本認証が必要です。資格情報を次のように設定しようとしています

System.setProperty("java.net.socks.username", "socks_username");             
System.setProperty("java.net.socks.password", "socks_passwd");

ソックスプロキシのユーザー名/パスワードを設定する他の方法はありますか (javamail API を使用)?

4

3 に答える 3

0

ドキュメントによると、java.net.socks.username プロパティは、java.net.Authenticator が設定されていない場合にのみ参照されます。おそらく、JVM の他のコードがデフォルトのオーセンティケーターを設定していませんか? 適切な権限がある場合は、独自のデフォルト java.net.Authenticator を設定してみてください

于 2012-07-12T20:38:30.563 に答える
0

java.net.Authenticator からクラス実装を定義する必要があります。

java.net.Authenticator authenticator = new java.net.Authenticator() {

 protected java.net.PasswordAuthentication getPasswordAuthentication() {
      return new java.net.PasswordAuthentication(username, password.toCharArray());
      }
 };

System.setProperty("java.net.socks.username", username); 
System.setProperty("java.net.socks.password", password); 
java.net.Authenticator.setDefault(authenticator);
于 2014-03-31T23:25:03.210 に答える