Merge pull request #5372 from betagouv/ignore-invalid-emails

Mailers : d'autres d'erreurs SMTP sont maintenant ignorées
This commit is contained in:
Pierre de La Morinerie 2020-07-13 16:25:57 +02:00 committed by GitHub
commit 45d6ba6b69
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 22 additions and 2 deletions

View file

@ -8,6 +8,12 @@ class ApplicationMailer < ActionMailer::Base
message.perform_deliveries = false message.perform_deliveries = false
end end
rescue_from Net::SMTPServerBusy do |error|
if error.message =~ /unexpected recipients/
message.perform_deliveries = false
end
end
# Attach the procedure logo to the email (if any). # Attach the procedure logo to the email (if any).
# Returns the attachment url. # Returns the attachment url.
def attach_logo(procedure) def attach_logo(procedure)

View file

@ -9,6 +9,12 @@ class DeviseUserMailer < Devise::Mailer
message.perform_deliveries = false message.perform_deliveries = false
end end
rescue_from Net::SMTPServerBusy do |error|
if error.message =~ /unexpected recipients/
message.perform_deliveries = false
end
end
def template_paths def template_paths
['devise_mailer'] ['devise_mailer']
end end

View file

@ -7,12 +7,20 @@ RSpec.describe ApplicationMailer, type: :mailer do
before do before do
allow_any_instance_of(DossierMailer) allow_any_instance_of(DossierMailer)
.to receive(:notify_new_draft) .to receive(:notify_new_draft)
.and_raise(Net::SMTPSyntaxError) .and_raise(smtp_error)
end end
context 'when the server handles invalid emails with Net::SMTPSyntaxError' do
let(:smtp_error) { Net::SMTPSyntaxError.new }
it { expect(subject.message).to be_an_instance_of(ActionMailer::Base::NullMail) } it { expect(subject.message).to be_an_instance_of(ActionMailer::Base::NullMail) }
end end
context 'when the server handles invalid emails with Net::SMTPServerBusy' do
let(:smtp_error) { Net::SMTPServerBusy.new('400 unexpected recipients: want atleast 1, got 0') }
it { expect(subject.message).to be_an_instance_of(ActionMailer::Base::NullMail) }
end
end
describe 'valid emails are sent' do describe 'valid emails are sent' do
it { expect(subject.message).not_to be_an_instance_of(ActionMailer::Base::NullMail) } it { expect(subject.message).not_to be_an_instance_of(ActionMailer::Base::NullMail) }
end end