Search in sources :

Example 1 with AuthSMTPClient

use of org.apache.commons.net.smtp.AuthSMTPClient in project gerrit by GerritCodeReview.

the class SmtpEmailSender method open.

private SMTPClient open() throws EmailException {
    final AuthSMTPClient client = new AuthSMTPClient(smtpEncryption == Encryption.SSL, sslVerify);
    client.setConnectTimeout(connectTimeout);
    try {
        client.connect(smtpHost, smtpPort);
        int replyCode = client.getReplyCode();
        String replyString = client.getReplyString();
        if (!SMTPReply.isPositiveCompletion(replyCode)) {
            throw new EmailException(String.format("SMTP server rejected connection: %d: %s", replyCode, replyString));
        }
        if (!client.login()) {
            throw new EmailException("SMTP server rejected HELO/EHLO greeting: " + replyString);
        }
        if (smtpEncryption == Encryption.TLS) {
            if (!client.execTLS()) {
                throw new EmailException("SMTP server does not support TLS");
            }
            if (!client.login()) {
                throw new EmailException("SMTP server rejected login: " + replyString);
            }
        }
        if (smtpUser != null && !client.auth(smtpUser, smtpPass)) {
            throw new EmailException("SMTP server rejected auth: " + replyString);
        }
        return client;
    } catch (IOException | EmailException e) {
        if (client.isConnected()) {
            try {
                client.disconnect();
            } catch (IOException e2) {
            // Ignored
            }
        }
        if (e instanceof EmailException) {
            throw (EmailException) e;
        }
        throw new EmailException(e.getMessage(), e);
    }
}
Also used : AuthSMTPClient(org.apache.commons.net.smtp.AuthSMTPClient) EmailException(com.google.gerrit.exceptions.EmailException) IOException(java.io.IOException)

Aggregations

EmailException (com.google.gerrit.exceptions.EmailException)1 IOException (java.io.IOException)1 AuthSMTPClient (org.apache.commons.net.smtp.AuthSMTPClient)1