我已经将 javamail 设置为通过 socks 代理运行,但它不会通过它。我尝试设置 mail.smtp.socks.host 和 mail.smtp.socks.port 但它一直直接到邮件主机。我觉得我错过了一些非常基本的东西。任何帮助,将不胜感激。这是我的属性:
props.setProperty("mail.smtp.host", this.smtpHost);
props.setProperty("mail.smtp.port", Integer.toString(this.smtpPort));
props.setProperty("mail.smtp.user", this.smtpUser);
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.smtp.starttls.enable", Boolean.toString(this.smtpTLS));
props.setProperty("mail.debug", "true");
if (this.useSOCKSProxy) {
logger.info("Using proxy");
props.setProperty("mail.smtp.socks.host", "127.0.0.1");
props.setProperty("mail.smtp.socks.port", Integer.toString(1080));
props.setProperty("mail.smtps.socks.host", this.socksProxyHost);
props.setProperty("mail.smtps.socks.port", Integer.toString(this.socksProxyPort));
props.setProperty("proxySet", "true");
props.setProperty("socksProxyHost", this.socksProxyHost);
props.setProperty("socksProxyPort", Integer.toString(this.socksProxyPort));
}
//Session session = Session.getInstance(props, new SmtpAuthenticator(this.smtpUser,this.smtpPassword));
Session session = Session.getDefaultInstance(props,
new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(smtpUser, smtpPassword);
}
});
//Session session = Session.getInstance(props, null);
session.setDebugOut(System.out);
session.setDebug(true);
//Transport tr = session.getTransport("smtp");
//tr.connect();
//tr.connect(this.smtpHost,this.smtpPort, this.smtpUser, this.smtpPassword);
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(this.smtpFrom));
msg.addRecipient(Message.RecipientType.TO, new InternetAddress(email));
msg.setSubject(subject);
msg.setText(msgToSend.toString());
msg.saveChanges();
Transport.send(msg);