【引言】我自己单独新建一个项目的话(只包含一个html页面和一个jsp页面),使用javamail发送邮件是没有问题你的,但放在公司的这个项目当中,就会出现错误~~ 【问题】提示错误信息
Error in Processing /html/en/contact/sendmail.jsp
org.apache.jasper.JasperException: Exception in JSP: /html/en/contact/sendmail.jsp:2724: String country=request.getParameter("CountryType");
25: String content=request.getParameter("content");
26:
27: String bodyTemp1=country.concat(content);
28: String bodyTemp2=companyType.concat(bodyTemp1);
29: String body=companyName.concat(bodyTemp2);
30:
Stacktrace:
at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:491)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:413)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at com.bigning.fantastic.filter.FantasticFilter$1.forward(FantasticFilter.java:61)
at com.bigning.fantastic.action.FantasticActionInvoker.invoke(FantasticActionInvoker.java:304)
at com.bigning.fantastic.filter.FantasticFilter.doFilter(FantasticFilter.java:57)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:843)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:679)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1303)
at java.lang.Thread.run(Thread.java:595)
'Exception in JSP: /html/en/contact/sendmail.jsp:27
24: String country=request.getParameter("CountryType");
25: String content=request.getParameter("content");
26:
27: String bodyTemp1=country.concat(content);
28: String bodyTemp2=companyType.concat(bodyTemp1);
29: String body=companyName.concat(bodyTemp2);
30:
Stacktrace:' is Caused by
java.lang.NullPointerException
at org.apache.jsp.html.en.contact.sendmail_jsp._jspService(sendmail_jsp.java:72)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:371)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at com.bigning.fantastic.filter.FantasticFilter$1.forward(FantasticFilter.java:61)
at com.bigning.fantastic.action.FantasticActionInvoker.invoke(FantasticActionInvoker.java:304)
at com.bigning.fantastic.filter.FantasticFilter.doFilter(FantasticFilter.java:57)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:843)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:679)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1303)
at java.lang.Thread.run(Thread.java:595)
(截图)javamailjsp
Error in Processing /html/en/contact/sendmail.jsp
org.apache.jasper.JasperException: Exception in JSP: /html/en/contact/sendmail.jsp:2724: String country=request.getParameter("CountryType");
25: String content=request.getParameter("content");
26:
27: String bodyTemp1=country.concat(content);
28: String bodyTemp2=companyType.concat(bodyTemp1);
29: String body=companyName.concat(bodyTemp2);
30:
Stacktrace:
at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:491)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:413)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at com.bigning.fantastic.filter.FantasticFilter$1.forward(FantasticFilter.java:61)
at com.bigning.fantastic.action.FantasticActionInvoker.invoke(FantasticActionInvoker.java:304)
at com.bigning.fantastic.filter.FantasticFilter.doFilter(FantasticFilter.java:57)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:843)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:679)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1303)
at java.lang.Thread.run(Thread.java:595)
'Exception in JSP: /html/en/contact/sendmail.jsp:27
24: String country=request.getParameter("CountryType");
25: String content=request.getParameter("content");
26:
27: String bodyTemp1=country.concat(content);
28: String bodyTemp2=companyType.concat(bodyTemp1);
29: String body=companyName.concat(bodyTemp2);
30:
Stacktrace:' is Caused by
java.lang.NullPointerException
at org.apache.jsp.html.en.contact.sendmail_jsp._jspService(sendmail_jsp.java:72)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:371)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at com.bigning.fantastic.filter.FantasticFilter$1.forward(FantasticFilter.java:61)
at com.bigning.fantastic.action.FantasticActionInvoker.invoke(FantasticActionInvoker.java:304)
at com.bigning.fantastic.filter.FantasticFilter.doFilter(FantasticFilter.java:57)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:843)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:679)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1303)
at java.lang.Thread.run(Thread.java:595)
(截图)javamailjsp
sendmail.jsp(提交表单之后直接发到邮箱)<%@page contentType="text/html;charset=UTF-8"%>
<%@page import="java.util.*"%>
<%@page import="javax.mail.*"%>
<%@page import="javax.mail.internet.*"%>
<%@page import="javax.activation.*"%> <html>
<head>
<title>sendmail.jsp</title>
</head><body>
<%String from=request.getParameter("from");
String password=request.getParameter("password");
//String subject=request.getParameter("subject");//获取body部分内容
String company=request.getParameter("company");
String companyType=request.getParameter("companyType");
String country=request.getParameter("CountryType");
String content=request.getParameter("content");String bodyTemp1=country.concat(content);
String bodyTemp2=companyType.concat(bodyTemp1);
String body=company.concat(bodyTemp2);//获取邮局服务器
int i;
for(i=0; from.charAt(i) != '@'; i++)
{}String stringDomain=from.substring(i+1); //获取域名String smtp="smtp.";
String mailServer=smtp.concat(stringDomain); //获取最终的邮局服务器
//
boolean sessionDebug = false;//获得系统属性对象,用下两句的任一句均可
Properties props=new Properties();
//设置SMTP主机
//以下一句是对任意的SMTP 邮件服务器均可,并且有了这一句,将不用设置传输协议了
props.put("mail.smtp.host", mailServer);//Session mailSession = Session.getDefaultInstance(props,null);
props.put("mail.smtp.auth", "true");
final String user = from;
final String pswd = password;
Session mailSession = Session.getDefaultInstance(props, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user, pswd);
}
});/*
try {
Store store = mailSession.getStore("pop3");
store.connect();
}catch(javax.mail.AuthenticationFailedException e) {
out.println(e.toString());
}
*///这样将确定接收方的邮件服务器主机,
//props.put("mail.host",host);
//设置邮件传输协议方式
//props.put("mail.transport.protocol","smtp");
//获取邮件会话对象
//Session mailSession = Session.getDefaultInstance(props,null);
mailSession.setDebug(sessionDebug);try{
//创建MIME邮件对象
Message msg = new MimeMessage(mailSession);//设置收信人
InternetAddress[] addressTo = {new InternetAddress("[email protected]")};
msg.setRecipients(Message.RecipientType.TO,addressTo);//InternetAddress[] addressFrom = {new InternetAddress(from)};
msg.setFrom(new InternetAddress(from));//msg.setSubject(subject);
msg.setSentDate(new Date());
msg.setText(body);//发送邮件
Transport.send(msg);
%>
<p>Your mail has been sent.</p>
<%
}
catch(Exception e){
out.println(e.toString());
}
%>
</body>
</html>
if(content == null) {
content = "";
} -------------------------
但是又出现这个问题:
'Exception in JSP: /html/en/contact/sendmail.jsp:54
51: }
52: //鑾峰彇閭眬鏈嶅姟鍣�
53: int i;
54: for(i=0; from.charAt(i) != '@'; i++)
55: {
56:
57: }
Stacktrace:' is Caused by
java.lang.StringIndexOutOfBoundsException: String index out of range: 0这个循环怎么会索引越界呢?
另外,你这样的写法本身也有一定问题吧,如果输入非法的地址没有@(我知道前台会验证,但是后台处理一样会考虑到),一样会导致出错。我个人觉得,可以考虑使用from.indexOf('@')来取下标,如果为-1,表示地址没含有@,大于-1再截取。
'Exception in JSP: /html/en/contact/sendmail.jsp:85
82: final String user = from;
83: final String pswd = password;
84:
85: Session mailSession = Session.getDefaultInstance(props, new Authenticator() {
86: protected PasswordAuthentication getPasswordAuthentication() {
87: return new PasswordAuthentication(user, pswd);
88: }
Stacktrace:' is Caused by
java.lang.SecurityException: Access to default session denied
at javax.mail.Session.getDefaultInstance(Session.java:327)然后,我网上一查,说要把getDefaultInstance——》改成getInstance,结果出现新的错误:
javax.mail.internet.AddressException: Illegal address in string ``''真不知道怎么解决了