Java 通过severlet邮寄
我尝试使用servlet发送电子邮件,但每次都会出现异常,尽管代码相同 当它通过简单的java类运行时,效果很好。请问我怎样才能摆脱这个 servlet中的异常。谢谢你的帮助。servlet的异常是 例外情况:Java 通过severlet邮寄,java,jakarta-mail,Java,Jakarta Mail,我尝试使用servlet发送电子邮件,但每次都会出现异常,尽管代码相同 当它通过简单的java类运行时,效果很好。请问我怎样才能摆脱这个 servlet中的异常。谢谢你的帮助。servlet的异常是 例外情况: javax.servlet.ServletException: Error instantiating servlet class SendEmail org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authentic
javax.servlet.ServletException: Error instantiating servlet class SendEmail
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.
java:204)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.
java:182)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
java.lang.Thread.run(Thread.java:662)
代码:
请发布完整的堆栈跟踪。您的堆栈跟踪中是否有“由…引起”的部分。您的servlet没有实例化,我希望在上面发布的下面发布一个较低级别的stacktrace。请确保您在WEB-INF/lib(特别是activation.jar)中拥有所有java邮件依赖项。我已经包括了javaee-api-5.0.3.jar。您在谈论这个吗?不,javamail需要javabean激活框架。将它添加到您的WEB-INF/lib中,您就没事了(它是一个jar,通常名为activation.jar,您可以在Oracle的网站上找到它)
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SendEmail extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");
Session session = Session.getDefaultInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("username","password");
}
});
try {
Message message = new MimeMessage(session);
message.setFrom(new
InternetAddress("from@no-spam.com"));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse("to@no-spam.com"));
message.setSubject("Testing Subject");
message.setText("Dear Mail Crawler," +
"\n\n No spam to my email, please!");
Transport.send(message);
System.out.println("Done");
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
}