首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java,无法在linux上发送邮件

Java,无法在linux上发送邮件
EN

Stack Overflow用户
提问于 2018-07-30 03:38:05
回答 1查看 154关注 0票数 0

使用我的家用计算机,我可以通过Gmail发送电子邮件而不会出错,然而,当我尝试在我的Linux机器上运行相同的代码时,它抛出:

代码语言:javascript
复制
javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465, response: -1
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2182)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:726)
    at javax.mail.Service.connect(Service.java:388)
    at javax.mail.Service.connect(Service.java:246)
    at javax.mail.Service.connect(Service.java:195)
    at javax.mail.Transport.send0(Transport.java:254)
    at javax.mail.Transport.send(Transport.java:124)
    at io.paratek.updates.util.Mail.sendMail(Mail.java:34)
    at io.paratek.updates.MailTest.main(MailTest.java:8)

我的代码

代码语言:javascript
复制
public class Mail {

public static void sendMail(String subject, String contents, String to) {

    Properties props = System.getProperties();
    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.getInstance(props,
            new javax.mail.Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication("myemail", "mypasswd");
                }
            });

    try {

        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress(to));
        message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
        message.setSubject(subject);
        message.setText(contents);
        Transport.send(message);

        System.out.println("Sent message successfully....");
    } catch (MessagingException mex) {
        mex.printStackTrace();
    }

}

}

我在两个系统上都使用Oracle JDK 181。我可以在Linux机器上成功连接"telnet smtp.gmail.com 465“。

EN

回答 1

Stack Overflow用户

发布于 2018-07-30 08:48:13

切换到TLS后,它可以正常工作

代码语言:javascript
复制
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.host", "smtp.gmail.com");
    props.put("mail.smtp.port", "587");
    props.put("mail.smtp.ssl.trust", "smtp.gmail.com");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51583902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档