FEATURE: Skip sending emails to domains on the .invalid TLD ()

This is a reserved TLD which we use when importing users without an email address. https://tools.ietf.org/html/rfc2606
This commit is contained in:
David Taylor 2019-03-13 16:17:59 +00:00 committed by GitHub
parent 9a5f08ee61
commit 420c6f8102
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 12 additions and 1 deletions
app/models
config/locales
lib/email
spec/components/email

@ -32,7 +32,8 @@ class SkippedEmailLog < ActiveRecord::Base
sender_message_to_blank: 17, sender_message_to_blank: 17,
sender_text_part_body_blank: 18, sender_text_part_body_blank: 18,
sender_body_blank: 19, sender_body_blank: 19,
sender_post_deleted: 20 sender_post_deleted: 20,
sender_message_to_invalid: 21
# you need to add the reason in server.en.yml below the "skipped_email_log" key # you need to add the reason in server.en.yml below the "skipped_email_log" key
# when you add a new enum value # when you add a new enum value
) )

@ -3465,6 +3465,7 @@ en:
sender_text_part_body_blank: "text_part.body is blank" sender_text_part_body_blank: "text_part.body is blank"
sender_body_blank: "body is blank" sender_body_blank: "body is blank"
sender_post_deleted: "post has been deleted" sender_post_deleted: "post has been deleted"
sender_message_to_invalid: "recipient has invalid email address"
color_schemes: color_schemes:
base_theme_name: "Base" base_theme_name: "Base"

@ -35,6 +35,8 @@ module Email
return skip(SkippedEmailLog.reason_types[:sender_message_blank]) if @message.blank? return skip(SkippedEmailLog.reason_types[:sender_message_blank]) if @message.blank?
return skip(SkippedEmailLog.reason_types[:sender_message_to_blank]) if @message.to.blank? return skip(SkippedEmailLog.reason_types[:sender_message_to_blank]) if @message.to.blank?
return skip(SkippedEmailLog.reason_types[:sender_message_to_invalid]) if to_address.end_with?(".invalid")
if @message.text_part if @message.text_part
if @message.text_part.body.to_s.blank? if @message.text_part.body.to_s.blank?
return skip(SkippedEmailLog.reason_types[:sender_text_part_body_blank]) return skip(SkippedEmailLog.reason_types[:sender_text_part_body_blank])

@ -58,6 +58,13 @@ describe Email::Sender do
Email::Sender.new(message, :hello).send Email::Sender.new(message, :hello).send
end end
it "doesn't deliver when the to address uses the .invalid tld" do
message = Mail::Message.new(body: 'hello', to: 'myemail@example.invalid')
message.expects(:deliver_now).never
expect { Email::Sender.new(message, :hello).send }.
to change { SkippedEmailLog.where(reason_type: SkippedEmailLog.reason_types[:sender_message_to_invalid]).count }.by(1)
end
it "doesn't deliver when the body is nil" do it "doesn't deliver when the body is nil" do
message = Mail::Message.new(to: 'eviltrout@test.domain') message = Mail::Message.new(to: 'eviltrout@test.domain')
message.expects(:deliver_now).never message.expects(:deliver_now).never