From 0d360522a036c2dc0e888f3a60d96a0fff5cf9bd Mon Sep 17 00:00:00 2001
From: brinn <brinn>
Date: Sat, 21 Nov 2009 14:04:50 +0000
Subject: [PATCH] change: improve error message when sending an email failed by
 including the invalid recipient addresses if any

SVN: 13463
---
 .../systemsx/cisd/common/mail/MailClient.java | 26 +++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)

diff --git a/common/source/java/ch/systemsx/cisd/common/mail/MailClient.java b/common/source/java/ch/systemsx/cisd/common/mail/MailClient.java
index 8eeb8b2f359..bc26fa9fa16 100644
--- a/common/source/java/ch/systemsx/cisd/common/mail/MailClient.java
+++ b/common/source/java/ch/systemsx/cisd/common/mail/MailClient.java
@@ -26,6 +26,7 @@ import javax.mail.Authenticator;
 import javax.mail.Message;
 import javax.mail.MessagingException;
 import javax.mail.PasswordAuthentication;
+import javax.mail.SendFailedException;
 import javax.mail.Session;
 import javax.mail.Transport;
 import javax.mail.internet.AddressException;
@@ -187,8 +188,29 @@ public final class MailClient extends Authenticator implements IMailClient
             send(msg);
         } catch (MessagingException ex)
         {
-            throw new EnvironmentFailureException("Sending e-mail with subject '" + subject
-                    + "' to recipients " + Arrays.asList(recipients) + " failed. Reason: " + ex, ex);
+            final StringBuilder b = new StringBuilder();
+            b.append("Sending e-mail with subject '");
+            b.append(subject);
+            b.append("' to recipients ");
+            b.append(Arrays.asList(recipients));
+            b.append(" failed.");
+            if (ex instanceof SendFailedException)
+            {
+                final Address[] invalidAddressesOrNull =
+                        ((SendFailedException) ex).getInvalidAddresses();
+                if (invalidAddressesOrNull != null && invalidAddressesOrNull.length > 0)
+                {
+                    b.append(" These email addresses are invalid:\n");
+                    for (Address address : invalidAddressesOrNull)
+                    {
+                        b.append(address.toString());
+                        b.append('\n');
+                    }
+                }
+            }
+            b.append("\nDetailed failure description:\n");
+            b.append(ex.toString());
+            throw new EnvironmentFailureException(b.toString(), ex);
         }
     }
 
-- 
GitLab