【发布时间】:2021-11-16 02:07:40
【问题描述】:
我正在尝试用 Java 发送电子邮件,我正在使用服务器代理。
我已经指定了类似的代理设置,但不起作用。
Properties props = System.getProperties();
props.put("http.proxyHost", "192.168.20.2");
props.put("http.proxyPort", "321");
props.put("java.net.useSystemProxies", "true");
Session session = Session.getDefaultInstance(props);
MimeMessage message = new MimeMessage(session);
try {
message.setFrom(new InternetAddress(sender));
message.addRecipient(Message.RecipientType.TO, new InternetAddress("asdf@gmail.com"));
message.setSubject("SUBJECT");
message.setText("BODY");
Transport transport = session.getTransport("smtp");
transport.connect("smtp.gmail.com", sender,pass); //exception here!!!
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
catch (MessagingException me) {
me.printStackTrace();
}
我收到这个异常是因为代码没有连接到互联网。
com.sun.mail.util.MailConnectException: Couldn't connect to host, port: smtp.gmail.com, 587; timeout -1;
有人知道为什么程序没有使用指定的代理吗?
【问题讨论】:
-
我的猜测是,如果没有启用 SSL,您将无法使用代理,因为我觉得 GMail 不允许非 SSL 传输
-
@g00se 我有
props.put("mail.smtp.starttls.enable", "true");并且不起作用。 :// -
啊,你误会了——我不是说你的应用启用了 TLS。我的意思是 TLS 启用你的代理(不平凡)