summaryrefslogtreecommitdiffstats
path: root/gerrit-server/src/main/java/com/google/gerrit/server/mail/OutgoingEmail.java
diff options
context:
space:
mode:
Diffstat (limited to 'gerrit-server/src/main/java/com/google/gerrit/server/mail/OutgoingEmail.java')
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/mail/OutgoingEmail.java34
1 files changed, 21 insertions, 13 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/mail/OutgoingEmail.java b/gerrit-server/src/main/java/com/google/gerrit/server/mail/OutgoingEmail.java
index 4bd6e49ae2..6d042eac45 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/mail/OutgoingEmail.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/mail/OutgoingEmail.java
@@ -45,6 +45,8 @@ import com.google.inject.Inject;
import com.google.inject.Provider;
import org.eclipse.jgit.util.SystemReader;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.net.MalformedURLException;
import java.net.URL;
@@ -65,6 +67,8 @@ import javax.annotation.Nullable;
/** Sends an email to one or more interested parties. */
public abstract class OutgoingEmail {
+ private static final Logger log = LoggerFactory.getLogger(OutgoingEmail.class);
+
private static final String HDR_TO = "To";
private static final String HDR_CC = "CC";
@@ -180,10 +184,6 @@ public abstract class OutgoingEmail {
// If they don't want a copy, but we queued one up anyway,
// drop them from the recipient lists.
//
- if (rcptTo.isEmpty()) {
- return;
- }
-
final String fromEmail = fromUser.getPreferredEmail();
for (Iterator<Address> i = smtpRcptTo.iterator(); i.hasNext();) {
if (i.next().email.equals(fromEmail)) {
@@ -195,6 +195,10 @@ public abstract class OutgoingEmail {
((AddressList) hdr).remove(fromEmail);
}
}
+
+ if (smtpRcptTo.isEmpty()) {
+ return;
+ }
}
}
@@ -564,7 +568,7 @@ public abstract class OutgoingEmail {
return false;
}
- if (rcptTo.isEmpty()) {
+ if (smtpRcptTo.isEmpty()) {
// If we have nobody to send this message to, then all of our
// selection filters previously for this type of message were
// unable to match a destination. Don't bother sending it.
@@ -724,14 +728,18 @@ public abstract class OutgoingEmail {
/** Schedule delivery of this message to the given account. */
protected void add(final RecipientType rt, final Address addr) {
if (addr != null && addr.email != null && addr.email.length() > 0) {
- smtpRcptTo.add(addr);
- switch (rt) {
- case TO:
- ((EmailHeader.AddressList) headers.get(HDR_TO)).add(addr);
- break;
- case CC:
- ((EmailHeader.AddressList) headers.get(HDR_CC)).add(addr);
- break;
+ if (emailSender.canEmail(addr.email)) {
+ smtpRcptTo.add(addr);
+ switch (rt) {
+ case TO:
+ ((EmailHeader.AddressList) headers.get(HDR_TO)).add(addr);
+ break;
+ case CC:
+ ((EmailHeader.AddressList) headers.get(HDR_CC)).add(addr);
+ break;
+ }
+ } else {
+ log.warn("Not emailing " + addr.email + " (prohibited by allowrcpt)");
}
}
}