我创建了ContactUs表单,用户可以通过该表单输入以下值:
Email
Name
Subject
Message
使用以下代码:
http://www.roseindia.net/mail/sending-an-email-in-jsp.shtml
点击提交按钮后,邮件应发送到我公司域名的1-2个电子邮件ID。用户可以从任何域输入任何电子邮件-d并将其发送到我公司的域email-ids(1-2)。
I'm using the following 2 libraries, activation.jar and mail.jar
在这种情况下,应在端口25下创建服务器连接?
为此,我在这里提供“堆栈跟踪”。它显示以下错误:
Could not connect to SMTP host: smtp.live.com, port: 25
错误是什么,我应该用live.com写别的东西吗?
域名应该像emailid = abc@xyz.edu.in一样写在这里,所以主机应该是smtp.xyz.edu.in?
请解释一下我的错误是什么?
STACKTRACE:
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
答案 0 :(得分:3)
你能在smtp.live.com上telnet 25吗? [你有SMTP问候消息吗?]
telnet smtp.live.com 25
否 =>您的传出SMTP连接可能被防火墙阻止。
<强>修正强>
通过submission port (587)发送电子邮件至smtp.live.com
它还接受SMTP连接/提交,但不太可能被防火墙。
transport.connect("smtp.live.com",587,null,null);
<强>解释强>
与端口25的传出连接经常被阻止作为外发垃圾邮件防范措施。
答案 1 :(得分:1)
错误:无法连接到SMTP主机:smtp.live.com,端口:25
我通过添加:
解决了gmail和yahoo主机的SMTP连接错误//使用“smtps”并且它有效:) transport = mailSession.getTransport(“smtps”);
//端口465用于身份验证,它通过gmail,yahoo主机解决 transport.connect( “smtp.gmail.com”,465 “本身份识别码”, “密码”);
所以,这是最终答案。
答案 2 :(得分:0)
This JavaMail FAQ entry可能会有所帮助。
问:如何使用JavaMail访问Hotmail(Windows Live邮件)?
答:JavaMail能够使用Hotmail发送和阅读邮件。所需要的只是正确配置JavaMail。我将使用JavaMail附带的演示程序来说明正确的配置 -
msgshow.java
和smtpsend.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 user@hotmail.com -P passwd someone@example.com(请注意,我将命令拆分为三行以进行显示,但您应该在一行上键入它。)
smtpsend程序在创建JavaMail会话时使用系统属性,因此命令行上设置的属性将可用于JavaMail会话。
smtpsend程序将提示主题和消息正文。在UNIX上使用^ D或在Windows上使用^ Z结束消息正文。
同样,您可以阅读
smtpsend.java
源代码,以了解如何在JavaMail API中使用命令行参数。上面显示的用于连接Gmail的代码片段也可以通过更改主机名并将连接调用更改为t.connect(host, 587, username, password)
来连接到Hotmail。当然,使用JavaMail API实现相同目标的方法不止一种。这可以帮助您了解使用Hotmail所必需的基本配置参数。