Fix sender email address for invoicing alerts

It was failing to send alert emails because the email address it was
constructing did not have permission through GAE to send emails. This switches
it over to using the send from email address already in use elsewhere in the app
that does successfully send emails.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=219812019
This commit is contained in:
mcilwain 2018-11-02 09:36:50 -07:00 committed by Michael Muller
parent 6a870e5820
commit f59005ad35
6 changed files with 14 additions and 29 deletions

View file

@ -827,20 +827,6 @@ public final class RegistryConfig {
return config.misc.alertRecipientEmailAddress; return config.misc.alertRecipientEmailAddress;
} }
/**
* Returns the email address we send emails from.
*
* @see google.registry.reporting.icann.ReportingEmailUtils
* @see google.registry.reporting.billing.BillingEmailUtils
* @see google.registry.reporting.spec11.Spec11EmailUtils
*/
@Provides
@Config("alertSenderEmailAddress")
public static String provideAlertSenderEmailAddress(
@Config("projectId") String projectId, RegistryConfigSettings config) {
return String.format("%s-no-reply@%s", projectId, config.misc.alertEmailSenderDomain);
}
/** /**
* Returns the email address to which spec 11 email should be replied. * Returns the email address to which spec 11 email should be replied.
* *

View file

@ -161,7 +161,6 @@ public class RegistryConfigSettings {
public String sheetExportId; public String sheetExportId;
public String alertRecipientEmailAddress; public String alertRecipientEmailAddress;
public String spec11ReplyToEmailAddress; public String spec11ReplyToEmailAddress;
public String alertEmailSenderDomain;
public int asyncDeleteDelaySeconds; public int asyncDeleteDelaySeconds;
} }

View file

@ -22,6 +22,9 @@ gSuite:
domainName: domain-registry.example domainName: domain-registry.example
# Display name and email address used on outgoing emails through G Suite. # Display name and email address used on outgoing emails through G Suite.
# The email address must be valid and have permission in the GAE app to send
# emails. For more info see:
# https://cloud.google.com/appengine/docs/standard/java/mail/#who_can_send_mail
outgoingEmailDisplayName: Example Registry outgoingEmailDisplayName: Example Registry
outgoingEmailAddress: noreply@project-id.appspotmail.com outgoingEmailAddress: noreply@project-id.appspotmail.com
@ -343,9 +346,6 @@ misc:
# to be a deliverable email address in case the registrars want to contact us. # to be a deliverable email address in case the registrars want to contact us.
spec11ReplyToEmailAddress: reply-to@example.com spec11ReplyToEmailAddress: reply-to@example.com
# Domain for the email address we send alert summary emails from.
alertEmailSenderDomain: appspotmail.com
# How long to delay processing of asynchronous deletions. This should always # How long to delay processing of asynchronous deletions. This should always
# be longer than eppResourceCachingSeconds, to prevent deleted contacts or # be longer than eppResourceCachingSeconds, to prevent deleted contacts or
# hosts from being used on domains. # hosts from being used on domains.

View file

@ -44,7 +44,7 @@ class BillingEmailUtils {
private final SendEmailService emailService; private final SendEmailService emailService;
private final YearMonth yearMonth; private final YearMonth yearMonth;
private final String alertSenderAddress; private final String outgoingEmailAddress;
private final String alertRecipientAddress; private final String alertRecipientAddress;
private final ImmutableList<String> invoiceEmailRecipients; private final ImmutableList<String> invoiceEmailRecipients;
private final String billingBucket; private final String billingBucket;
@ -56,7 +56,7 @@ class BillingEmailUtils {
BillingEmailUtils( BillingEmailUtils(
SendEmailService emailService, SendEmailService emailService,
YearMonth yearMonth, YearMonth yearMonth,
@Config("alertSenderEmailAddress") String alertSenderAddress, @Config("gSuiteOutgoingEmailAddress") String outgoingEmailAddress,
@Config("alertRecipientEmailAddress") String alertRecipientAddress, @Config("alertRecipientEmailAddress") String alertRecipientAddress,
@Config("invoiceEmailRecipients") ImmutableList<String> invoiceEmailRecipients, @Config("invoiceEmailRecipients") ImmutableList<String> invoiceEmailRecipients,
@Config("billingBucket") String billingBucket, @Config("billingBucket") String billingBucket,
@ -65,7 +65,7 @@ class BillingEmailUtils {
Retrier retrier) { Retrier retrier) {
this.emailService = emailService; this.emailService = emailService;
this.yearMonth = yearMonth; this.yearMonth = yearMonth;
this.alertSenderAddress = alertSenderAddress; this.outgoingEmailAddress = outgoingEmailAddress;
this.alertRecipientAddress = alertRecipientAddress; this.alertRecipientAddress = alertRecipientAddress;
this.invoiceEmailRecipients = invoiceEmailRecipients; this.invoiceEmailRecipients = invoiceEmailRecipients;
this.billingBucket = billingBucket; this.billingBucket = billingBucket;
@ -86,7 +86,7 @@ class BillingEmailUtils {
new GcsFilename(billingBucket, invoiceDirectoryPrefix + invoiceFile); new GcsFilename(billingBucket, invoiceDirectoryPrefix + invoiceFile);
try (InputStream in = gcsUtils.openInputStream(invoiceFilename)) { try (InputStream in = gcsUtils.openInputStream(invoiceFilename)) {
Message msg = emailService.createMessage(); Message msg = emailService.createMessage();
msg.setFrom(new InternetAddress(alertSenderAddress)); msg.setFrom(new InternetAddress(outgoingEmailAddress));
for (String recipient : invoiceEmailRecipients) { for (String recipient : invoiceEmailRecipients) {
msg.addRecipient(RecipientType.TO, new InternetAddress(recipient)); msg.addRecipient(RecipientType.TO, new InternetAddress(recipient));
} }
@ -126,7 +126,7 @@ class BillingEmailUtils {
retrier.callWithRetry( retrier.callWithRetry(
() -> { () -> {
Message msg = emailService.createMessage(); Message msg = emailService.createMessage();
msg.setFrom(new InternetAddress(alertSenderAddress)); msg.setFrom(new InternetAddress(outgoingEmailAddress));
msg.addRecipient(RecipientType.TO, new InternetAddress(alertRecipientAddress)); msg.addRecipient(RecipientType.TO, new InternetAddress(alertRecipientAddress));
msg.setSubject(String.format("Billing Pipeline Alert: %s", yearMonth.toString())); msg.setSubject(String.format("Billing Pipeline Alert: %s", yearMonth.toString()));
msg.setText(body); msg.setText(body);

View file

@ -25,7 +25,7 @@ import javax.mail.internet.InternetAddress;
/** Static utils for emailing reporting results. */ /** Static utils for emailing reporting results. */
public class ReportingEmailUtils { public class ReportingEmailUtils {
@Inject @Config("alertSenderEmailAddress") String sender; @Inject @Config("gSuiteOutgoingEmailAddress") String sender;
@Inject @Config("alertRecipientEmailAddress") String recipient; @Inject @Config("alertRecipientEmailAddress") String recipient;
@Inject SendEmailService emailService; @Inject SendEmailService emailService;
@Inject ReportingEmailUtils() {} @Inject ReportingEmailUtils() {}

View file

@ -45,7 +45,7 @@ public class Spec11EmailUtils {
private final SendEmailService emailService; private final SendEmailService emailService;
private final YearMonth yearMonth; private final YearMonth yearMonth;
private final String alertSenderAddress; private final String outgoingEmailAddress;
private final String alertRecipientAddress; private final String alertRecipientAddress;
private final String spec11ReplyToAddress; private final String spec11ReplyToAddress;
private final String reportingBucket; private final String reportingBucket;
@ -58,7 +58,7 @@ public class Spec11EmailUtils {
Spec11EmailUtils( Spec11EmailUtils(
SendEmailService emailService, SendEmailService emailService,
YearMonth yearMonth, YearMonth yearMonth,
@Config("alertSenderEmailAddress") String alertSenderAddress, @Config("gSuiteOutgoingEmailAddress") String outgoingEmailAddress,
@Config("alertRecipientEmailAddress") String alertRecipientAddress, @Config("alertRecipientEmailAddress") String alertRecipientAddress,
@Config("spec11ReplyToEmailAddress") String spec11ReplyToAddress, @Config("spec11ReplyToEmailAddress") String spec11ReplyToAddress,
@Config("spec11EmailBodyTemplate") String spec11EmailBodyTemplate, @Config("spec11EmailBodyTemplate") String spec11EmailBodyTemplate,
@ -68,7 +68,7 @@ public class Spec11EmailUtils {
Retrier retrier) { Retrier retrier) {
this.emailService = emailService; this.emailService = emailService;
this.yearMonth = yearMonth; this.yearMonth = yearMonth;
this.alertSenderAddress = alertSenderAddress; this.outgoingEmailAddress = outgoingEmailAddress;
this.alertRecipientAddress = alertRecipientAddress; this.alertRecipientAddress = alertRecipientAddress;
this.spec11ReplyToAddress = spec11ReplyToAddress; this.spec11ReplyToAddress = spec11ReplyToAddress;
this.reportingBucket = reportingBucket; this.reportingBucket = reportingBucket;
@ -135,7 +135,7 @@ public class Spec11EmailUtils {
msg.setSubject( msg.setSubject(
String.format("Google Registry Monthly Threat Detector [%s]", yearMonth.toString())); String.format("Google Registry Monthly Threat Detector [%s]", yearMonth.toString()));
msg.setText(body.toString()); msg.setText(body.toString());
msg.setFrom(new InternetAddress(alertSenderAddress)); msg.setFrom(new InternetAddress(outgoingEmailAddress));
msg.addRecipient(RecipientType.TO, new InternetAddress(registrarEmail)); msg.addRecipient(RecipientType.TO, new InternetAddress(registrarEmail));
msg.addRecipient(RecipientType.BCC, new InternetAddress(spec11ReplyToAddress)); msg.addRecipient(RecipientType.BCC, new InternetAddress(spec11ReplyToAddress));
emailService.sendMessage(msg); emailService.sendMessage(msg);
@ -147,7 +147,7 @@ public class Spec11EmailUtils {
retrier.callWithRetry( retrier.callWithRetry(
() -> { () -> {
Message msg = emailService.createMessage(); Message msg = emailService.createMessage();
msg.setFrom(new InternetAddress(alertSenderAddress)); msg.setFrom(new InternetAddress(outgoingEmailAddress));
msg.addRecipient(RecipientType.TO, new InternetAddress(alertRecipientAddress)); msg.addRecipient(RecipientType.TO, new InternetAddress(alertRecipientAddress));
msg.setSubject(subject); msg.setSubject(subject);
msg.setText(body); msg.setText(body);