使用SSL连接通过Gmail SMTP服务器发送电子邮件通知

3

我试图通过使用SSL连接的Gmail SMTP服务器发送电子邮件通知。但是没有电子邮件被收到。甚至没有报错信息。我的方法send()如下所示。请帮忙解决。我正在使用JSF2。

public void send()
{
    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 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("nid@gmail.com"));
        message.setRecipients(Message.RecipientType.TO,
                InternetAddress.parse("arun@gmail.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);
    }
}

2
JSF2与此有什么关系?您是在暗示这在具有main()方法的普通Java应用程序中执行时可以正常工作吗?如果它甚至在这样的情况下失败,那么它与JSF2完全无关,您需要删除JSF2标签。 - BalusC
好的。但是这不是在main()函数中。我在某个地方调用了这个send()函数。 - Nidheesh
2
我认为你没有理解我的意思。将此代码复制到 main() 方法中并像普通的Java应用程序一样执行它。如果您遇到完全相同的问题,则与JSF2无关。毕竟,作为普通Java应用程序执行还允许更快速、更简单的开发/测试。一旦您使其正常工作,您只需要在JSF2操作方法中导入/调用这个独立的Java类即可。 - BalusC
1
使用正确的Google用户名和密码,上述代码在这里可以正常工作,我收到了创建的电子邮件。 - Robert
1个回答

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接