diff --git a/app/services/post_alerter.rb b/app/services/post_alerter.rb index 86cf77f829..5051070eda 100644 --- a/app/services/post_alerter.rb +++ b/app/services/post_alerter.rb @@ -577,11 +577,6 @@ class PostAlerter users end - def group_notifying_via_smtp(post) - return nil if !SiteSetting.enable_smtp || post.post_type != Post.types[:regular] - post.topic.allowed_groups.where(smtp_enabled: true).first - end - def notify_pm_users(post, reply_to_user, notified) return unless post.topic @@ -624,6 +619,11 @@ class PostAlerter end end + def group_notifying_via_smtp(post) + return nil if !SiteSetting.enable_smtp || !SiteSetting.enable_imap || post.post_type != Post.types[:regular] + post.topic.allowed_groups.where(smtp_enabled: true, imap_enabled: true).first + end + def notify_group_direct_emailers(post) email_addresses = [] emails_to_skip_send = [] diff --git a/spec/mailers/group_smtp_mailer_spec.rb b/spec/mailers/group_smtp_mailer_spec.rb index 5858418a23..0eedddab14 100644 --- a/spec/mailers/group_smtp_mailer_spec.rb +++ b/spec/mailers/group_smtp_mailer_spec.rb @@ -101,17 +101,13 @@ describe GroupSmtpMailer do group.update(imap_enabled: false) end - it "uses the reply key based reply to address" do + it "does not send the email" do post = PostCreator.create(user, topic_id: receiver.incoming_email.topic.id, raw: raw ) - expect(ActionMailer::Base.deliveries.size).to eq(1) - - sent_mail = ActionMailer::Base.deliveries[0] - post_reply_key = PostReplyKey.last - expect(sent_mail.reply_to).to contain_exactly("test+#{post_reply_key.reply_key}@test.com") + expect(ActionMailer::Base.deliveries.size).to eq(0) end end end diff --git a/spec/services/post_alerter_spec.rb b/spec/services/post_alerter_spec.rb index 609100ad27..ea7cd26f0a 100644 --- a/spec/services/post_alerter_spec.rb +++ b/spec/services/post_alerter_spec.rb @@ -1295,17 +1295,23 @@ describe PostAlerter do context "SMTP (group_smtp_email)" do before do SiteSetting.enable_smtp = true + SiteSetting.enable_imap = true Jobs.run_immediately! end fab!(:group) do Fabricate( :group, - smtp_server: "imap.gmail.com", + smtp_server: "smtp.gmail.com", smtp_port: 587, + smtp_ssl: true, + imap_server: "imap.gmail.com", + imap_port: 993, + imap_ssl: true, email_username: "discourse@example.com", - email_password: "discourse@example.com", - smtp_enabled: true + email_password: "password", + smtp_enabled: true, + imap_enabled: true ) end @@ -1349,6 +1355,27 @@ describe PostAlerter do expect(email.subject).to eq("Re: #{topic.title}") end + it "does not send a group smtp email if imap is not enabled for the group" do + group.update!(imap_enabled: false) + create_post_with_incoming + post = Fabricate(:post, topic: topic) + expect { PostAlerter.new.after_save_post(post, true) }.to change { ActionMailer::Base.deliveries.size }.by(0) + end + + it "does not send a group smtp email if SiteSetting.enable_imap is false" do + SiteSetting.enable_imap = false + create_post_with_incoming + post = Fabricate(:post, topic: topic) + expect { PostAlerter.new.after_save_post(post, true) }.to change { ActionMailer::Base.deliveries.size }.by(0) + end + + it "does not send a group smtp email if SiteSetting.enable_smtp is false" do + SiteSetting.enable_smtp = false + create_post_with_incoming + post = Fabricate(:post, topic: topic) + expect { PostAlerter.new.after_save_post(post, true) }.to change { ActionMailer::Base.deliveries.size }.by(0) + end + it "does not send group smtp emails for a whisper" do create_post_with_incoming post = Fabricate(:post, topic: topic, post_type: Post.types[:whisper])