prt20
11-10-2008, 01:00 PM
Hi i get the following error when i try and call the send email function from another class. When a user presses a button on the send password web form, the email address is sent correctly to the servlet. Any help would be great. Thanks
10-Nov-2008 17:53:21 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet SendPassEmailServlet threw exception
java.lang.ClassNotFoundException: javax.mail.Address
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1386)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1232)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at com.web.servlets.SendPassEmailServlet.doPost(SendPassEmailServlet.java:63)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
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 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.Http11Processor.process(Http11Processor.java:875)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProt ocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Unknown Source)
Email.java
package com.util;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.Properties;
public class Email {
private static final String SMTP_HOST_NAME = "smtp.gmail.com";
private static final int SMTP_HOST_PORT = 465;
private static final String SMTP_AUTH_USER = "test@gmail.com";
private static final String SMTP_AUTH_PWD = "test";
public static void main(String[] args) throws Exception{
//new Email().sendMail("test@hotmail.com");
}
public static void sendMail(String emailAddress, String password) throws Exception{
Properties props = new Properties();
props.put("mail.transport.protocol", "smtps");
props.put("mail.smtps.host", SMTP_HOST_NAME);
props.put("mail.smtps.auth", "true");
// props.put("mail.smtps.quitwait", "false");
Session mailSession = Session.getDefaultInstance(props);
mailSession.setDebug(true);
Transport transport = mailSession.getTransport();
MimeMessage message = new MimeMessage(mailSession);
message.setSubject("test ");
message.setContent("Your Password is : " + password, "text/plain");
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(emailAddress));
transport.connect
(SMTP_HOST_NAME, SMTP_HOST_PORT, SMTP_AUTH_USER, SMTP_AUTH_PWD);
transport.sendMessage(message,
message.getRecipients(Message.RecipientType.TO));
transport.close();
}
}
SendPassEmailServlet.java
package com.web.servlets;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.util.Email;
import com.util.ProcessSQLRequest;
public class SendPassEmailServlet extends BaseServlet {
/**
*
*/
public SendPassEmailServlet() {
System.out.println("Constructor sendPassEmailServlet");
}
/**
* doPost method
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// get the value from the httprequest parameter
String emailAddress = request.getParameter("emailAddress");
//get an arraylist of results from the database using the title value to
//determine which information to obtain
String query = "SELECT password from password where email = '" + emailAddress +"'";
ResultSet rs = ProcessSQLRequest.executeQuery(query);
PrintWriter out = response.getWriter();
response.setContentType("text/xml");
String password = "";
try {
while (rs.next()) {
password = rs.getString("password");
}
rs.close();
//System.out.println(password);
} catch (SQLException ex) {
System.err.println("SQLException: " + ex.getMessage());
}
try {
Email.sendMail(emailAddress, password);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
10-Nov-2008 17:53:21 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet SendPassEmailServlet threw exception
java.lang.ClassNotFoundException: javax.mail.Address
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1386)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1232)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at com.web.servlets.SendPassEmailServlet.doPost(SendPassEmailServlet.java:63)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
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 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.Http11Processor.process(Http11Processor.java:875)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProt ocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Unknown Source)
Email.java
package com.util;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.Properties;
public class Email {
private static final String SMTP_HOST_NAME = "smtp.gmail.com";
private static final int SMTP_HOST_PORT = 465;
private static final String SMTP_AUTH_USER = "test@gmail.com";
private static final String SMTP_AUTH_PWD = "test";
public static void main(String[] args) throws Exception{
//new Email().sendMail("test@hotmail.com");
}
public static void sendMail(String emailAddress, String password) throws Exception{
Properties props = new Properties();
props.put("mail.transport.protocol", "smtps");
props.put("mail.smtps.host", SMTP_HOST_NAME);
props.put("mail.smtps.auth", "true");
// props.put("mail.smtps.quitwait", "false");
Session mailSession = Session.getDefaultInstance(props);
mailSession.setDebug(true);
Transport transport = mailSession.getTransport();
MimeMessage message = new MimeMessage(mailSession);
message.setSubject("test ");
message.setContent("Your Password is : " + password, "text/plain");
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(emailAddress));
transport.connect
(SMTP_HOST_NAME, SMTP_HOST_PORT, SMTP_AUTH_USER, SMTP_AUTH_PWD);
transport.sendMessage(message,
message.getRecipients(Message.RecipientType.TO));
transport.close();
}
}
SendPassEmailServlet.java
package com.web.servlets;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.util.Email;
import com.util.ProcessSQLRequest;
public class SendPassEmailServlet extends BaseServlet {
/**
*
*/
public SendPassEmailServlet() {
System.out.println("Constructor sendPassEmailServlet");
}
/**
* doPost method
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// get the value from the httprequest parameter
String emailAddress = request.getParameter("emailAddress");
//get an arraylist of results from the database using the title value to
//determine which information to obtain
String query = "SELECT password from password where email = '" + emailAddress +"'";
ResultSet rs = ProcessSQLRequest.executeQuery(query);
PrintWriter out = response.getWriter();
response.setContentType("text/xml");
String password = "";
try {
while (rs.next()) {
password = rs.getString("password");
}
rs.close();
//System.out.println(password);
} catch (SQLException ex) {
System.err.println("SQLException: " + ex.getMessage());
}
try {
Email.sendMail(emailAddress, password);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}