Validate smtp server credentials using java without actually sending mail

前端 未结 2 709
我在风中等你
我在风中等你 2020-12-17 00:36

To verify smtp server credentials shall I use transport.connect()?

Session session = Session.getInstance(properties,authenticator);

 Transport          


        
相关标签:
2条回答
  • 2020-12-17 00:45
    public boolean confirmSMTP(String host, String port, String username, String password, String auth, String enctype) {
        boolean result = false;
        try {
            Properties props = new Properties();
            if (auth.equals(true)) {
                props.setProperty("mail.smtp.auth", "true"); 
            } else { 
                props.setProperty("mail.smtp.auth", "false"); 
            }
            if (enctype.endsWith("TLS")) {
                props.setProperty("mail.smtp.starttls.enable", "true");
            } else if (enctype.endsWith("SSL")) {
                props.setProperty("mail.smtp.startssl.enable", "true");
            }
            Session session = Session.getInstance(props, null);
            Transport transport = session.getTransport("smtp");
            int portint = Integer.parseInt(port);
            transport.connect(host, portint, username, password);
            transport.close();
            result = true;
    
        } catch(AuthenticationFailedException e) {
            Logging.addMsg(e.toString(), "SMTP: Authentication Failed", false, true);
    
        } catch(MessagingException e) {
            Logging.addMsg(e.toString(), "SMTP: Messaging Exception Occurred", false, true);
        } catch (Exception e) {
            Logging.addMsg(e.toString(), "SMTP: Unknown Exception", false, true);
        }
    
        return result;
    }
    
    0 讨论(0)
  • 2020-12-17 01:09

    This question: 'Verify mail server connection programmatically in ColdFusion' has a java solution as part of the accepted answer:

    int port = 587;
    String host = "smtp.gmail.com";
    String user = "username@gmail.com";
    String pwd = "email password";
    
    try {
        Properties props = new Properties();
        // required for gmail 
        props.put("mail.smtp.starttls.enable","true");
        props.put("mail.smtp.auth", "true");
        // or use getDefaultInstance instance if desired...
        Session session = Session.getInstance(props, null);
        Transport transport = session.getTransport("smtp");
        transport.connect(host, port, user, pwd);
        transport.close();
        System.out.println("success");
     } 
     catch(AuthenticationFailedException e) {
           System.out.println("AuthenticationFailedException - for authentication failures");
           e.printStackTrace();
     }
     catch(MessagingException e) {
           System.out.println("for other failures");
           e.printStackTrace();
     }
    
    0 讨论(0)
提交回复
热议问题