Merge "Improve SMTP client error messages" into stable-2.5
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/mail/SmtpEmailSender.java b/gerrit-server/src/main/java/com/google/gerrit/server/mail/SmtpEmailSender.java
index f681710..ce45ffe 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/mail/SmtpEmailSender.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/mail/SmtpEmailSender.java
@@ -182,7 +182,12 @@
 
         Writer w = client.sendMessageData();
         if (w == null) {
-          throw new EmailException("Server " + smtpHost + " rejected body");
+          /* Include rejected recipient error messages here to not lose that
+           * information. That piece of the puzzle is vital if zero recipients
+           * are accepted and the server consequently rejects the DATA command.
+           */
+          throw new EmailException(rejected + "Server " + smtpHost
+              + " rejected DATA command: " + client.getReplyString());
         }
         w = new BufferedWriter(w);
 
@@ -201,7 +206,8 @@
         w.close();
 
         if (!client.completePendingCommand()) {
-          throw new EmailException("Server " + smtpHost + " rejected body");
+          throw new EmailException("Server " + smtpHost
+              + " rejected message body: " + client.getReplyString());
         }
 
         client.logout();
@@ -237,7 +243,8 @@
       }
       if (!client.login()) {
         String e = client.getReplyString();
-        throw new EmailException("SMTP server rejected login: " + e);
+        throw new EmailException(
+            "SMTP server rejected HELO/EHLO greeting: " + e);
       }
 
       if (smtpEncryption == Encryption.TLS) {