diff --git a/changelogs/unreleased/fix-smtp-pool-errors.yml b/changelogs/unreleased/fix-smtp-pool-errors.yml new file mode 100644 index 0000000000000000000000000000000000000000..dea75dd797fe49ad8a45ce274a810c620598f3e2 --- /dev/null +++ b/changelogs/unreleased/fix-smtp-pool-errors.yml @@ -0,0 +1,6 @@ +--- +title: Fix SMTP errors when delivering service desk thank you emails with SMTP pool + enabled +merge_request: 60843 +author: +type: fixed diff --git a/lib/gitlab/email/handler/service_desk_handler.rb b/lib/gitlab/email/handler/service_desk_handler.rb index 80e8b7260994d63cb3be0376bc3359ed107f2c60..14930e90c9e3a39e7a5e77622e1affc775a900ba 100644 --- a/lib/gitlab/email/handler/service_desk_handler.rb +++ b/lib/gitlab/email/handler/service_desk_handler.rb @@ -38,7 +38,7 @@ def execute if from_address add_email_participant - send_thank_you_email! + send_thank_you_email end end @@ -92,8 +92,8 @@ def create_issue! end end - def send_thank_you_email! - Notify.service_desk_thank_you_email(@issue.id).deliver_later! + def send_thank_you_email + Notify.service_desk_thank_you_email(@issue.id).deliver_later end def message_including_template diff --git a/spec/lib/gitlab/email/handler/service_desk_handler_spec.rb b/spec/lib/gitlab/email/handler/service_desk_handler_spec.rb index 7436765e8ee2fb2b7ce040cc35adfc9c5d5bf26a..6d26b3e10641de982fdb5d1d11f19469257f5f68 100644 --- a/spec/lib/gitlab/email/handler/service_desk_handler_spec.rb +++ b/spec/lib/gitlab/email/handler/service_desk_handler_spec.rb @@ -90,11 +90,6 @@ def set_template_file(file_name, content) context 'when quick actions are present' do let(:label) { create(:label, project: project, title: 'label1') } let(:milestone) { create(:milestone, project: project) } - let!(:user) { create(:user, username: 'user1') } - - before do - project.add_developer(user) - end it 'applies quick action commands present on templates' do file_content = %(Text from template \n/label ~#{label.title} \n/milestone %"#{milestone.name}"") diff --git a/vendor/gems/mail-smtp_pool/lib/mail/smtp_pool.rb b/vendor/gems/mail-smtp_pool/lib/mail/smtp_pool.rb index ab8a765205892699b6cd551ee18b017b9b384ff8..b0c82a3db717e95591dc4f60d3af4bc2f1f89dff 100644 --- a/vendor/gems/mail-smtp_pool/lib/mail/smtp_pool.rb +++ b/vendor/gems/mail-smtp_pool/lib/mail/smtp_pool.rb @@ -30,5 +30,11 @@ def initialize(settings) def deliver!(mail) @pool.with { |conn| conn.deliver!(mail) } end + + # This makes it compatible with Mail's `#deliver!` method + # https://github.com/mikel/mail/blob/22a7afc23f253319965bf9228a0a430eec94e06d/lib/mail/message.rb#L271 + def settings + {} + end end end diff --git a/vendor/gems/mail-smtp_pool/spec/lib/mail/smtp_pool_spec.rb b/vendor/gems/mail-smtp_pool/spec/lib/mail/smtp_pool_spec.rb index aa2a0e19ac80930cbc33f24e735efa2b51b6d614..bbe5ef8b0681b2415c8ecc00cf1fb9b8174d6550 100644 --- a/vendor/gems/mail-smtp_pool/spec/lib/mail/smtp_pool_spec.rb +++ b/vendor/gems/mail-smtp_pool/spec/lib/mail/smtp_pool_spec.rb @@ -64,5 +64,27 @@ expect(MockSMTP.deliveries.size).to eq(1) end + + context 'when called from Mail:Message' do + before do + mail.delivery_method(described_class, { pool: described_class.create_pool }) + end + + describe '#deliver' do + it 'delivers mail' do + mail.deliver + + expect(MockSMTP.deliveries.size).to eq(1) + end + end + + describe '#deliver!' do + it 'delivers mail' do + mail.deliver! + + expect(MockSMTP.deliveries.size).to eq(1) + end + end + end end end