邮件发送失败,SMTP无法连接 [英] Mail Sending fails with SMTP fails to connect

查看:1262
本文介绍了邮件发送失败,SMTP无法连接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用以下程序发送邮件,但收到以下错误消息.

I am trying to send a mail using the below program but I am getting the following error message.

             public class SMTPTest {
    //private Logger log = Logger.getLogger(this.getClass());

    public boolean sendSimpleMail(String to, String subject, String body) {
        Properties props = new Properties();
        props.put("mail.smtp.user", "amrita_test");
        props.put("mail.smtp.password", "aview");
        props.put("mail.smtp.host", "192.168.0.25");
        props.put("mail.smtp.port", "25");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.auth", "true");
        // props.put("mail.smtp.debug", "true");
        props.put("mail.smtp.debug", "false");
        props.put("mail.smtp.socketFactory.port", "425");
        props.put("mail.smtp.socketFactory.class",
                "javax.net.ssl.SSLSocketFactory");
        props.put("mail.smtp.socketFactory.fallback", "false");
        try {
            Authenticator auth = new SMTPAuthenticator();
            Session session = Session.getInstance(props, auth);
            // session.setDebug(true);
            MimeMessage msg = new MimeMessage(session);
            String content = body;
            msg.setSubject(subject);
            msg.setFrom(new InternetAddress("buddhiedge@gmail.com"));
            Address[] addresses = new Address[1];
            addresses[0] = new InternetAddress("buddhiedge@gmail.com");
            msg.setReplyTo(addresses);
            msg.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
            msg.setContent(content, "text/html");
            Transport.send(msg);
            return true;
        } catch (Exception mex) {
            mex.printStackTrace();
            System.out.println("Error in sending mail :: " + mex.getMessage());
            return false;
        }
    }

    private class SMTPAuthenticator extends Authenticator {
        public PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication("amrita_test",
                    "aview");
        }
    }
    public static void main(String args[]){
        SMTPTest test=new SMTPTest();
        test.sendSimpleMail("praveenpkd@gmail.com", "subject", "body");
    }
}

错误是: javax.mail.MessagingException:无法连接到SMTP主机:192.168.0.25,端口:25;

Error is: javax.mail.MessagingException: Could not connect to SMTP host: 192.168.0.25, port: 25;

    nested exception is:
    java.net.ConnectException: Connection timed out: connect
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1282)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:370)
    at javax.mail.Service.connect(Service.java:297)
    at javax.mail.Service.connect(Service.java:156)
    at javax.mail.Service.connect(Service.java:105)
    at javax.mail.Transport.send0(Transport.java:168)
    at javax.mail.Transport.send(Transport.java:98)
    at SMTPTest.sendSimpleMail(SMTPTest.java:45)
    at SMTPTest.main(SMTPTest.java:62)
Caused by: java.net.ConnectException: Connection timed out: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
    at java.net.Socket.connect(Socket.java:519)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:550)
    at com.sun.net.ssl.internal.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:141)
    at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:232)
    at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:163)
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1250)
    ... 8 more

但是SMTP服务器或连接没有问题. telnet 192.168.0.25 25 连接良好. 如何解决这个问题.

But the There is no problem with SMTP Server or connection. telnet 192.168.0.25 25 connects fine. How to solve this.

推荐答案

请尝试通过从代码中仅删除以下内容来再次发送邮件.

Please try to send mail again by removing only the following from your code.

    props.put("mail.smtp.socketFactory.port", "425");
    props.put("mail.smtp.socketFactory.class",
            "javax.net.ssl.SSLSocketFactory");
    props.put("mail.smtp.socketFactory.fallback", "false");

通常情况下,例外

java.net.ConnectException:连接超时

java.net.ConnectException: Connection timed out

仅当Java邮件无法在指定端口连接到提到的服务器时,才会引起

.最可能的原因是Java邮件尝试连接到会话属性中指定的425端口.

is caused only if the java mail is not able to connect to the mentioned server in the specified port. The most probable cause would be that java mail tries to connect to the 425 port specified in your session properties.

这篇关于邮件发送失败,SMTP无法连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆