首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaMail:如何对不同的线程使用不同的SOCKS5?

JavaMail:如何对不同的线程使用不同的SOCKS5?
EN

Stack Overflow用户
提问于 2011-09-24 18:20:11
回答 1查看 1.3K关注 0票数 1

我编写了多线程应用程序,它可以从每个线程从数据库连接到一些电子邮件帐户。我知道JavaMail没有任何选项可以使用SOCKS5来连接,所以我决定通过System.setProperty方法使用它。但是这个方法为整个应用程序设置了SOCKS5,我需要每个线程使用一个SOCKS5。我是说:

  • 第一线程:使用SOCKS 192.168.0.1:12345用于bob@localhost连接
  • 第二线程:使用SOCKS 192.168.0.20:12312用于alice@localhost连接
  • 第三线程:使用SOCKS 192.168.12.:8080用于

@localdomain连接

诸若此类。你能告诉我怎么做吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-24 18:33:32

您需要使用您想要的代理创建自己的套接字:

代码语言:javascript
复制
SocketAddress addr = new InetSocketAddress("socks.mydomain.com", 1080);
Proxy proxy = new Proxy(Proxy.Type.SOCKS, addr);
Socket socket = new Socket(proxy);
InetSocketAddress dest = new InetSocketAddress("smtp.foo.com", 25);
socket.connect(dest);

然后将其用于连接:

代码语言:javascript
复制
SMTPTransport transport = (SMTPTransport) session.getTransport("smtp");
transport.connect(socket);

编辑:如果您需要通过服务器进行身份验证才能发送邮件,这是一个棘手的问题。如果是这样,则必须创建javax.mail.Authenticator的子类并将其传递给Session.getInstance()方法:

代码语言:javascript
复制
MyAuthenticator authenticator = new MyAuthenticator();

Properties properties = new Properties();
properties.setProperty("mail.smtp.submitter",
                        authenticator.getPasswordAuthentication().getUserName());
properties.setProperty("mail.smtp.auth", "true");

Session session = Session.getInstance(properties, authenticator);

其中,身份验证器看起来像:

代码语言:javascript
复制
private class MyAuthenticator extends javax.mail.Authenticator 
{
    private PasswordAuthentication authentication;

    public Authenticator() 
    {
         String username = "auth-user";
         String password = "auth-password";
         authentication = new PasswordAuthentication(username, password);
    }

    protected PasswordAuthentication getPasswordAuthentication() 
    {
        return authentication;
    }
}

这都是未经检验的,但我相信这是你必须做的一切。至少应该让你走上正确的道路。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7540976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档