Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过severlet邮寄_Java_Jakarta Mail - Fatal编程技术网

Java 通过severlet邮寄

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

我尝试使用servlet发送电子邮件,但每次都会出现异常,尽管代码相同 当它通过简单的java类运行时,效果很好。请问我怎样才能摆脱这个 servlet中的异常。谢谢你的帮助。servlet的异常是

例外情况:

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);
    }

     }
  }