使用javax.mail与ssl发送电子邮件

电池

我想使用gmail作为smtp服务器发送电子邮件。

这是我的代码,我没有让它工作...运行testSettings()后,我得到了调试输出,然后它停止了。没有超时,没有错误,什么都没有。

public void testSettings() {
    final String username = Settings.get("benutzername");
    final String password = Settings.get("passwort");

    Properties props = new Properties();
    props.put("mail.transport.protocol", "smtps");

        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.socketFactory.port", Settings.get("port"));
        props.put("mail.smtp.socketFactory.class",
                "javax.net.ssl.SSLSocketFactory");

    props.put("mail.smtp.auth", "true");

    props.put("mail.smtp.host", Settings.get("server"));
    props.put("mail.smtp.port", Settings.get("port"));
    props.put("mail.smtp.timeout", "10000");

    props.put("mail.smtp.ssl.checkserveridentity", "false");
    props.put("mail.smtp.ssl.trust", "*");
    props.put("mail.smtp.connectiontimeout", "10000");

    props.put("mail.smtp.debug", "true");
    props.put("mail.smtp.socketFactory.fallback", "false");
    Session session = Session.getInstance(props,
            new javax.mail.Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(username, password);
                }
            });
    session.setDebug(true);
    try {

        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress("[email protected]"));
        message.setRecipients(Message.RecipientType.TO,
                InternetAddress.parse("[email protected]"));
        message.setSubject("Testing Subject");
        message.setText("test");
        Transport transport = session.getTransport("smtps");
        transport.send(message);
        // Transport.send(message);

        System.out.println("Done");

    } catch (MessagingException e) {
        // throw new RuntimeException(e);
    }
}


DEBUG: setDebug: JavaMail version 1.4.7
DEBUG: getProvider() returning     javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle]
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 587, isSSL false

发生以下错误:http : //pastie.org/private/rkoknss6ppiufjd9swqta

阿纳·奥鲁约夫(Anar Orujov)

代替

props.put(“ mail.transport.protocol”,“ smtps”);

运输运输= session.getTransport(“ smtps”);

使用

props.put(“ mail.transport.protocol”,“ smtp”);

运输运输= session.getTransport(“ smtp”);

使用smtp而不是smtps

我使用了JDK 8,Netbeans 8,JavaMail 1.5.2,该示例运行良好

public static void main(String[] args) {
    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() {
                            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("[email protected]","password");
            }
        });

    try {

        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress("[email protected]"));
        message.setRecipients(Message.RecipientType.TO,
                InternetAddress.parse("[email protected]"));
        message.setSubject("Testing Subject");
        message.setText("Test Mail");

        Transport.send(message);

        System.out.println("Done");

    } catch (MessagingException e) {
        throw new RuntimeException(e);
    }
}

如果您无法连接端口465,请尝试端口587

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用mail()发送电子邮件

来自分类Dev

使用SSL发送电子邮件

来自分类Dev

使用SSL发送电子邮件

来自分类Dev

使用Javax发送电子邮件?

来自分类Dev

cv使用wp-mail发送电子邮件

来自分类Dev

使用luasocket SMTP和SSL发送电子邮件

来自分类Dev

使用luasocket smtp和ssl发送电子邮件

来自分类Dev

我无法使用Java Mail API发送电子邮件,但电子邮件已发送但未收到或未显示在已发送的电子邮件中

来自分类Dev

使用sendmail发送电子邮件

来自分类Dev

使用php发送电子邮件

来自分类Dev

使用nodemailer发送电子邮件

来自分类Dev

使用VBScript发送电子邮件

来自分类Dev

使用nodemailer发送电子邮件

来自分类Dev

使用Gradle发送电子邮件

来自分类Dev

使用Phonegap发送电子邮件

来自分类Dev

使用SwiftUI发送电子邮件

来自分类Dev

使用sendmail发送电子邮件

来自分类Dev

使用Telnet发送电子邮件

来自分类Dev

使用Gradle发送电子邮件

来自分类Dev

使用 netcat 发送电子邮件

来自分类Dev

使用 Lua 发送电子邮件

来自分类Dev

使用 TcpClient 发送电子邮件

来自分类Dev

在Android中使用Java Mail API向带有附件的电子邮件发送电子邮件

来自分类Dev

使用Flask-Mail通过Gmail-socket.gaierr发送电子邮件

来自分类Dev

使用Java Mail API通过Struts发送电子邮件

来自分类Dev

应用程序无法使用Mail :: ... queue()发送电子邮件

来自分类Dev

使用Java Mail API通过Struts发送电子邮件

来自分类Dev

使用Java Mail-api发送电子邮件失败

来自分类Dev

从 profile.php 页面使用 wp_mail 发送电子邮件