【问题标题】:Sending email through proxy using gmail smtp JAVA使用 gmail smtp JAVA 通过代理发送电子邮件
【发布时间】: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 启用你的代理(不平凡)

标签: java proxy smtp


【解决方案1】:

我假设您正在使用 JavaMail?

如果是这种情况,您可能使用了错误的属性,根据您的代理的身份验证和您使用的 JavaMail 版本,有不同的配置方法:https://javaee.github.io/javamail/FAQ.html#proxy

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2011-02-08
  • 2018-01-09
  • 2017-05-12
  • 2016-01-16
  • 2011-08-11
  • 2016-10-30
  • 1970-01-01
  • 2018-09-01
  • 2012-05-29
相关资源
最近更新 更多