Limit environments allowed to send emails out (#1807)

This commit is contained in:
Pavlo Tkach 2022-10-07 12:12:57 -04:00 committed by GitHub
parent b83c970af4
commit a64d086708

View file

@ -14,8 +14,12 @@
package google.registry.util;
import static com.google.common.collect.ImmutableSet.toImmutableSet;
import static com.google.common.collect.Iterables.toArray;
import com.google.common.base.Ascii;
import com.google.common.collect.ImmutableSet;
import com.google.common.flogger.FluentLogger;
import com.google.common.net.MediaType;
import google.registry.util.EmailMessage.Attachment;
import java.io.IOException;
@ -44,6 +48,10 @@ public class SendEmailService {
private final Retrier retrier;
private final TransportEmailSender transportEmailSender;
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final ImmutableSet<String> ALLOWED_ENVS =
ImmutableSet.of("PRODUCTION", "UNITTEST");
@Inject
SendEmailService(Retrier retrier, TransportEmailSender transportEmailSender) {
this.retrier = retrier;
@ -55,6 +63,18 @@ public class SendEmailService {
* on transient failures.
*/
public void sendEmail(EmailMessage emailMessage) {
if (!ALLOWED_ENVS.contains(
Ascii.toUpperCase(System.getProperty("google.registry.environment", "UNITTEST")))) {
logger.atInfo().log(
String.format(
"Email with subject %s would have been sent to recipients %s",
emailMessage.subject().substring(0, Math.min(emailMessage.subject().length(), 15)),
String.join(
" , ",
emailMessage.recipients().stream()
.map(ia -> ia.toString())
.collect(toImmutableSet()))));
} else {
retrier.callWithRetry(
() -> {
Message msg =
@ -88,4 +108,5 @@ public class SendEmailService {
IOException.class,
MessagingException.class);
}
}
}