首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SMTP -通过代理(JAVA)发送电子邮件失败

SMTP -通过代理(JAVA)发送电子邮件失败
EN

Stack Overflow用户
提问于 2016-06-28 13:24:43
回答 1查看 730关注 0票数 0

我通过SMTP发送电子邮件(使用邮件提供程序web.de),使用以下代码:

代码语言:javascript
复制
    package form.controll;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class NotificationControllerTest {

  @Before
  public void setUp() throws Exception {
  }

  @After
  public void tearDown() throws Exception {
  }

  @Test
  public void test() {
    NotificationController aNotifi = new NotificationController( "smtp.web.de", "587" );
    aNotifi.sendEmail( "TARGETEMAIL@blabla.de", "SENDERSEMAIL@web.de", "THESENDERSPASSWORD", "New User Registration Notification", "New User has just been registered to blabla" );
  }

}

这很好,但是如果我在代理上下文中使用相同的方法,我总是会得到错误:

535身份验证凭据无效

-Why会发生这种情况吗?-How会修复电子邮件发送吗?

EN

回答 1

Stack Overflow用户

发布于 2016-06-28 13:30:11

你应该读这个常见问题的答案

JavaMail目前不支持通过web代理服务器访问邮件服务器。使用代理服务器的主要原因之一是允许来自公司网络内部的HTTP请求通过公司防火墙。防火墙通常会阻止对Internet的大多数访问,但将允许来自代理服务器的请求通过。此外,公司网络内的邮件服务器将对电子邮件执行类似的功能,通过SMTP接受邮件并将其转发到因特网上的最终目的地,并接受传入的邮件并将其发送到适当的内部邮件服务器。 如果代理服务器支持SOCKS V4或V5协议(http://www.socks.nec.com/aboutsocks.html,RFC1928)并允许匿名连接,并且使用JDK1.5或更高版本和JavaMail 1.4.5或更高版本,则可以通过为com.sun.mail.smtp包设置javadocs中描述的"mail.smtp.socks.host“属性,在每个会话、每个协议的基础上配置SOCKS。"imap“和"pop3”协议也存在类似的属性。 如果使用的是较早版本的JDK或JavaMail,则可以告诉Java运行时将所有TCP连接定向到SOCKS服务器。有关socksProxyHost和socksProxyPort属性的最新文档,请参阅Networking指南。这些是系统级属性,而不是JavaMail会话属性.它们可以在调用应用程序时从命令行设置,例如: java -DsocksProxyHost=myproxy .此工具可用于将SMTP、IMAP和POP3通信从JavaMail引导到SOCKS代理服务器。请注意,设置这些属性会将所有TCP套接字指向SOCKS代理,这可能会对应用程序的其他方面产生负面影响。 如果没有这样的SOCKS服务器,如果您想使用JavaMail间接地访问防火墙之外的邮件服务器,您可能可以使用诸如Cork螺杆之类的程序,或者通过HTTP代理服务器连接到隧道TCP连接。JavaMail不支持通过HTTP服务器进行直接访问。

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

https://stackoverflow.com/questions/38077509

复制
相关文章

相似问题

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