2012-02-03 66 views
-1

我有一個JSP代碼。我嘗試發送一封smtp郵件。它有一個錯誤:通過JSP代碼發送電子郵件

Transport.send(message); 。

任何人都可以幫助我嗎?

這裏是代碼:

<%@ page import="java.io.*,java.util.*,javax.mail.*, javax.mail.Service"%> 
<%@ page import="javax.mail.internet.*,javax.activation.*"%> 
<%@ page import="javax.servlet.http.*,javax.servlet.*" %> 
<% 
String result; 
// Recipient's email ID needs to be mentioned. 
String to = "[email protected]"; 

// Sender's email ID needs to be mentioned 
String from = "[email protected]"; 

// Assuming you are sending email from localhost 
String host = "mail.gmx.com"; 

// Get system properties object 
Properties properties = System.getProperties(); 

// Setup mail server 
properties.setProperty("mail.smtp.host", host); 

// Get the default Session object. 
Session mailSession = Session.getDefaultInstance(properties); 


    // Create a default MimeMessage object. 
    MimeMessage message = new MimeMessage(mailSession); 
    // Set From: header field of the header. 
    message.setFrom(new InternetAddress(from)); 
    // Set To: header field of the header. 
    message.addRecipient(Message.RecipientType.TO, 
          new InternetAddress(to)); 
    // Set Subject: header field 
    message.setSubject("This is the Subject Line!"); 
    // Now set the actual message 
    message.setText("This is actual message"); 
    // Send message 
    Transport.send(message); 
    result = "Sent message successfully...."; 

%> 
<html> 
<head> 
<title>Send Email using JSP</title> 
</head> 
<body> 
<center> 
<h1>Send Email using JSP</h1> 
</center> 
<p align="center"> 
<% 
out.println("Result: " + result + "\n"); 
%> 
</p> 
</body> 
</html> 

PS。我在類路徑中使用mail.jar和activation.jar。我會感謝你的幫助。

以下是錯誤信息,我已經得到了:

org.apache.jasper.JasperException: An exception occurred processing JSP page /mail.jsp  
at line 37 

34: // Now set the actual message 
35: message.setText("This is actual message"); 
36: // Send message 
37: Transport.send(message); 
38: result = "Sent message successfully...."; 
39: 
40: %> 


Stacktrace: 
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.ja 
va:510) 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:401) 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
com.ish.system.runtime.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilt  er.java:67) 
root cause 

javax.servlet.ServletException: javax.mail.MessagingException: Could not connect to      
SMTP  host: mail.gmx.com, port: 25; 
nested exception is: 
java.net.SocketException: Permission denied: connect 
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.jav  a:862) 
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:  791) 
org.apache.jsp.mail_jsp._jspService(mail_jsp.java:124) 
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
com.ish.system.runtime.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilt  er.java:67) 
root cause 

javax.mail.MessagingException: Could not connect to SMTP host: mail.gmx.com, port: 25; 
    nested exception is: 
java.net.SocketException: Permission denied: connect 
com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1282) 
com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:370) 
javax.mail.Service.connect(Service.java:275) 
javax.mail.Service.connect(Service.java:156) 
javax.mail.Service.connect(Service.java:105) 
javax.mail.Transport.send0(Transport.java:168) 
javax.mail.Transport.send(Transport.java:98) 
org.apache.jsp.mail_jsp._jspService(mail_jsp.java:98) 
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
com.ish.system.runtime.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilt  er.java:67) 
root cause 

java.net.SocketException: Permission denied: connect 
java.net.PlainSocketImpl.socketConnect(Native Method) 
java.net.PlainSocketImpl.doConnect(Unknown Source) 
java.net.PlainSocketImpl.connectToAddress(Unknown Source) 
java.net.PlainSocketImpl.connect(Unknown Source) 
java.net.SocksSocketImpl.connect(Unknown Source) 
java.net.Socket.connect(Unknown Source) 
java.net.Socket.connect(Unknown Source) 
com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:232) 
com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:189) 
com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1250) 
com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:370) 
javax.mail.Service.connect(Service.java:275) 
javax.mail.Service.connect(Service.java:156) 
javax.mail.Service.connect(Service.java:105) 
javax.mail.Transport.send0(Transport.java:168) 
javax.mail.Transport.send(Transport.java:98) 
org.apache.jsp.mail_jsp._jspService(mail_jsp.java:98) 
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
com.ish.system.runtime.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilt  er.java:67) 
+0

請閱讀 - http://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files – adatapost 2012-02-04 02:45:25

回答

1
javax.mail.MessagingException: Could not connect to SMTP host: mail.gmx.com, port: 25; 
nested exception is: 
java.net.SocketException: Permission denied: connect 

這是一個相當低的水平問題。執行當前Java運行時環境的操作系統平臺指定的用戶不允許打開到給定主機的網絡連接。

這可能有很多可能的原因,具體取決於用戶的權限,更高級別的控制級別,防火牆設置,使用的操作系統等等。至少,問題不在於你的Java代碼(免責聲明:我沒有讀過它,整個例外本身已經是答案,所以你的Java代碼中可能仍然有一些不相關的錯誤)

我會提到一些常見的原因,以你明白,你應該尋找解決方案:

  • 的web應用部署到第三方主機不允許你的web應用連接任何主機除了第三方主機本身。解決方案:升級帳戶,以便您可以使用主機自己的郵件服務器(或者您可能已經擁有它,而無需升級),或者遷移到其他主機。

  • 操作系統平臺特定的非管理員用戶帳戶不允許進行任何網絡連接。管理員帳戶必須相應地更改用戶的帳戶設置。

  • 操作系統平臺的防火牆安裝的配置過於嚴格。嘗試完全禁用防火牆並重新測試以排除其被懷疑,然後在必要時重新配置防火牆。