我正在创建一个Web应用程序来向某个收件人发送电子邮件。当我运行此代码时,我面临着像这样的异常
org.apache.jasper.JasperException:在第27行处理JSP页面/two.jsp时发生异常
24: props.put("mail.smtp.auth", "true");
25: props.put("mail.smtp.port", "465");
26:
27: Session mailSession = Session.getDefaultInstance(props,
28: new javax.mail.Authenticator() {
29: protected PasswordAuthentication
30: getPasswordAuthentication() {
我该怎么办?这是我完整的jsp代码。
<html>
<body>
<%@ page import="java.util.Properties" %>
<%@ page import="javax.mail.Message" %>
<%@ page import="javax.mail.MessagingException" %>
<%@ page import="javax.mail.PasswordAuthentication" %>
<%@ page import="javax.mail.Session" %>
<%@ page import="javax.mail.Transport" %>
<%@ page import="javax.mail.internet.InternetAddress" %>
<%@ page import="javax.mail.internet.*" %>
<%
Properties props = new Properties();
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 mailSession = Session.getDefaultInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication
getPasswordAuthentication() {
return new PasswordAuthentication
("senderUsername","senderPassword");
}
});
try {
Message message = new MimeMessage(mailSession );
message.setFrom(new InternetAddress("senderemail@gmail.com"));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse("recipient@gmail.com"));
message.setSubject("hi");
message.setText("text contrnt" +
"\n\n Test email");
Transport.send(message);
System.out.println("Done");
} catch (MessagingException e) {
throw new RuntimeException(e);
}
%>
</body>
</html>
有任何帮助吗? 谢谢。
答案 0 :(得分:0)
Session mailSession = Session.getInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication
getPasswordAuthentication() {
return new PasswordAuthentication
("","");
}
});
使用Session.getInstance()代替Session.getDefaultInstance()。
答案 1 :(得分:0)
转到https://www.google.com/settings/security并停用2步验证并试一试。
答案 2 :(得分:0)
首先,修复这些common mistakes。
接下来,使用这些debugging tips并发布调试输出,如果仍然无法弄清楚。
您可能希望使用try / catch包围您的代码,以确保您不会错过被抛出的异常。
您不会说出您正在使用的应用服务器,但如果它不是Java EE应用服务器,请确保JavaMail jar文件位于服务器的#34; LIB&#34;目录或在&#34; lib&#34;您的Web应用程序的目录。