0

我创建了 ContactUs 表单,用户可以通过该表单输入以下值:

    Email  
    Name  
    Subject  
    Message  

使用以下代码:
http ://www.roseindia.net/mail/sending-an-email-in-jsp.shtml

单击提交按钮后,邮件应发送到我公司域的 1-2 个电子邮件 ID。用户可以从任何域输入任何 email-d 并将其发送到我公司的域 email-ids(1-2)。

    I'm using the following 2 libraries, activation.jar and mail.jar  

在这种情况下,应该在端口 25 下创建服务器连接?
为此,我在这里提供“stacktrace”。它显示以下错误:

    Could not connect to SMTP host: smtp.live.com, port: 25  

错误是什么,我应该写其他东西来代替live.com吗?
域名应该写在这里,比如emailid=abc@xyz.edu.in,那么host应该是smtp.xyz.edu.in?
请解释一下,这是什么错误?

堆栈跟踪:

    org.apache.catalina.util.LifecycleBase start  
    INFO: The start() method was called on component  
          [StandardEngine[Catalina].StandardHost
    [localhost].StandardContext[/WebApplicationAskAQuestion6]] after start() had  
    already been called. The second call will be ignored.
    javax.mail.MessagingException: Could not connect to SMTP host: 10.10.10.34, port:    465;
     nested exception is:
java.net.ConnectException: Connection timed out: connect
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1961)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:654)
at javax.mail.Service.connect(Service.java:295)
at org.apache.jsp.mail_jsp._jspService(mail_jsp.java:81)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1008)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1852)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
    Caused by: java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:69)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
at java.net.Socket.connect(Socket.java:579)
at java.net.Socket.connect(Socket.java:528)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:321)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:237)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1927)
... 25 more
4

3 回答 3

3

你能在 smtp.live.com 上 telnet 端口 25 吗?[您收到 SMTP 问候消息了吗?]

telnet smtp.live.com 25

NO => 您的传出 SMTP 连接可能被防火墙阻止。

修复通过 smtp.live.com 上的提交端口 (587)
发送电子邮件。 它也接受 SMTP 连接/提交,但不太可能被防火墙屏蔽。

transport.connect("smtp.live.com",587,null,null);

解释
到端口 25 的传出连接经常被阻止作为传出垃圾邮件预防措施。

于 2013-07-05T05:59:49.787 回答
1

错误:无法连接到 SMTP 主机:smtp.live.com,端口:25

通过添加以下内容,我为 gmail 和 yahoo 主机解决了这个 SMTP 连接错误:

// 使用了 "smtps" 并且成功了 :) transport = mailSession.getTransport("smtps");

// 端口 465 用于身份验证,它通过 gmail 解决,雅虎主机 transport.connect("smtp.gmail.com",465,"myid","password");

所以,这是最终的答案。

于 2013-07-08T16:49:38.670 回答
0

这个 JavaMail FAQ 条目可能会有所帮助。

问:如何使用 JavaMail 访问 Hotmail(Windows Live 邮件)?

答:JavaMail 能够使用 Hotmail 发送和阅读邮件。所需要的只是正确配置JavaMail。我将使用 JavaMail 附带的演示程序说明正确的配置 -msgshow.javasmtpsend.java.

假设您的 Hotmail 用户名是“user@hotmail.com”,密码是“passwd”。

要从您的 Hotmail 收件箱中读取邮件,请调用 msgshow,如下所示:

java msgshow -D -T pop3s -H pop3.live.com -U user@hotmail.com -P passwd

通过阅读msgshow.java源代码,您可以了解这些命令行参数是如何在 JavaMail API 中使用的。您应该首先尝试使用如上所示的 msgshow,然后继续编写和配置您自己的程序以使用 Hotmail。上面显示的用于连接到 Gmail 的代码片段也可以通过简单地更改主机名来连接到 Hotmail。

要通过 Hotmail 发送消息,请调用 smtpsend,如下所示:

java -Dmail.smtp.starttls.enable=true -Dmail.smtp.port=587
    smtpsend -d -A -M smtp.live.com
    -U 用户@hotmail.com -P 密码某人@example.com

(请注意,我将命令分成三行进行显示,但您应该在一行中键入。)

smtpsend 程序在创建 JavaMail 会话时使用系统属性,因此在命令行上设置的属性将可用于 JavaMail 会话。

smtpsend 程序将提示输入主题和消息正文文本。在 UNIX 上以 ^D 或在 Windows 上以 ^Z 结束消息正文。

同样,您可以阅读smtpsend.java源代码以了解 JavaMail API 中如何使用命令行参数。上面显示的用于连接到 Gmail 的代码片段也可以通过简单地更改主机名并将连接调用更改为来连接到 Hotmail t.connect(host, 587, username, password)。当然,使用 JavaMail API 实现相同目标的方法不止一种。这应该有助于您了解使用 Hotmail 所需的基本配置参数。

于 2013-07-05T07:42:29.533 回答