diff --git a/app/mailers/application_mailer.rb b/app/mailers/application_mailer.rb index 3504f1a7a..0eb908467 100644 --- a/app/mailers/application_mailer.rb +++ b/app/mailers/application_mailer.rb @@ -3,6 +3,10 @@ class ApplicationMailer < ActionMailer::Base default from: "demarches-simplifiees.fr <#{CONTACT_EMAIL}>" layout 'mailer' + rescue_from Net::SMTPSyntaxError do |_error| + message.perform_deliveries = false + end + # Attach the procedure logo to the email (if any). # Returns the attachment url. def attach_logo(procedure) diff --git a/spec/mailers/application_mailer_spec.rb b/spec/mailers/application_mailer_spec.rb new file mode 100644 index 000000000..9cfa295f9 --- /dev/null +++ b/spec/mailers/application_mailer_spec.rb @@ -0,0 +1,20 @@ +RSpec.describe ApplicationMailer, type: :mailer do + describe 'dealing with invalid emails' do + let(:dossier) { create(:dossier, procedure: build(:simple_procedure)) } + subject { DossierMailer.notify_new_draft(dossier) } + + describe 'invalid emails are not sent' do + before do + allow_any_instance_of(DossierMailer) + .to receive(:notify_new_draft) + .and_raise(Net::SMTPSyntaxError) + end + + it { expect(subject.message).to be_an_instance_of(ActionMailer::Base::NullMail) } + end + + describe 'valid emails are sent' do + it { expect(subject.message).not_to be_an_instance_of(ActionMailer::Base::NullMail) } + end + end +end