JSP电子邮件发送错误

时间:2014-07-14 14:59:43

标签: java jsp email smtp javamail

我正在创建一个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>

有任何帮助吗? 谢谢。

3 个答案:

答案 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应用程序的目录。