Я новичок в использовании библиотек, но мне нужно иметь возможность отправлять электронные письма пользователям, которые забыли свой пароль.Я пытаюсь использовать JavaMail и Apache Commons Email для реализации этого.Тем не менее, я думаю, что я должен импортировать библиотеки неправильно.
Когда я пытаюсь отправить электронное письмо, я получаю следующее сообщение:
Apr 17, 2011 11:54:33 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet jsp threw exception
org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: 60 in the jsp file: /sendpw.jsp
The type javax.mail.Authenticator cannot be resolved. It is indirectly referenced from required .class files
код:
57: EmailAuthentication ea = new EmailAuthentication();
58: String authUser = ea.getUser();
59: String authPw = ea.getPw();
60: email.setAuthenticator(new DefaultAuthenticator(authUser, authPw));
61: email.setTLS(true);
62: email.setFrom(authUser+"@gmail.com");
63: email.setSubject("Your Last Love Password");
Stacktrace:
at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:439)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:349)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:327)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:314)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:589)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1555)
at java.lang.Thread.run(Thread.java:662)
Я пробовал несколько вещей:
Скопировал папку org.apache.commons.mail, содержащую все файлы .javaв исходный файл моего проекта netbeans, а затем добавив в проект библиотеку javamail.Это сработало в первый раз, и я смог отправить несколько успешных электронных писем, но в какой-то момент он перестал работать (возможно, из-за того, что я очистил и собрал проект), и я получил сообщение выше.
Создала новую библиотеку с файлами jar в bin-версии commons-email-1.2, как я это делал с javamail, и добавила ее в проект.Похоже, что этот не работает, потому что когда я открываю defaultauthenticator.java, он не может импортировать javax.mail.Authenticator, хотя я добавил обе библиотеки в один и тот же проект netbeans.
Добавлен mail.jar и все остальные .jars (dsn.jar, imap.jar, pop3.jar и т. Д.) Из javamail в ту же библиотеку, что и apache common-email-1.2, что означает 2 файла classpath (mail.jar и commons-email-1.2.jar) и 6 исходных файлов.На этот раз в defaultauthenticator.java не было ошибок, но все равно не удалось отправить сообщение (та же ошибка сервера, что и выше).
Часть кода:
HtmlEmail email = new HtmlEmail();
email.setHostName("smtp.gmail.com");
email.setSmtpPort(587);
......
email.setAuthenticator(new DefaultAuthenticator(authUser, authPw));
email.setTLS(true);
email.setFrom(authUser+"@gmail.com");
email.setSubject("Your Password");
....
Я использую Netbeans 6.9.1, tomcat 6.0.26.
Что я делаю неправильно?