1
0
مراية لـ https://github.com/postalserver/postal.git تم المزامنة 2025-12-01 05:43:04 +00:00

refactor: move Postal::BounceMessage to app/models/bounce_message

هذا الالتزام موجود في:
Adam Cooke
2024-02-21 21:06:51 +00:00
الأصل 77faf886b3
التزام 05d2ec4d04
4 ملفات معدلة مع 62 إضافات و64 حذوفات

عرض الملف

@@ -0,0 +1,55 @@
# frozen_string_literal: true
class BounceMessage
def initialize(server, message)
@server = server
@message = message
end
def raw_message
mail = Mail.new
mail.to = @message.mail_from
mail.from = "Mail Delivery Service <#{@message.route.description}>"
mail.subject = "Mail Delivery Failed (#{@message.subject})"
mail.text_part = body
mail.attachments["Original Message.eml"] = { mime_type: "message/rfc822", encoding: "quoted-printable", content: @message.raw_message }
mail.message_id = "<#{SecureRandom.uuid}@#{Postal.config.dns.return_path}>"
mail.to_s
end
def queue
message = @server.message_db.new_message
message.scope = "outgoing"
message.rcpt_to = @message.mail_from
message.mail_from = @message.route.description
message.domain_id = @message.domain&.id
message.raw_message = raw_message
message.bounce = true
message.bounce_for_id = @message.id
message.save
message.id
end
def postmaster_address
@server.postmaster_address || "postmaster@#{@message.domain&.name || Postal.config.web.host}"
end
private
def body
<<~BODY
This is the mail delivery service responsible for delivering mail to #{@message.route.description}.
The message you've sent cannot be delivered. Your original message is attached to this message.
For further assistance please contact #{postmaster_address}. Please include the details below to help us identify the issue.
Message Token: #{@message.token}@#{@server.token}
Orginal Message ID: #{@message.message_id}
Mail from: #{@message.mail_from}
Rcpt To: #{@message.rcpt_to}
BODY
end
end

عرض الملف

@@ -46,7 +46,7 @@ class QueuedMessage < ApplicationRecord
def send_bounce def send_bounce
return unless message.send_bounces? return unless message.send_bounces?
Postal::BounceMessage.new(server, message).queue BounceMessage.new(server, message).queue
end end
def allocate_ip_address def allocate_ip_address

عرض الملف

@@ -1,57 +0,0 @@
# frozen_string_literal: true
module Postal
class BounceMessage
def initialize(server, message)
@server = server
@message = message
end
def raw_message
mail = Mail.new
mail.to = @message.mail_from
mail.from = "Mail Delivery Service <#{@message.route.description}>"
mail.subject = "Mail Delivery Failed (#{@message.subject})"
mail.text_part = body
mail.attachments["Original Message.eml"] = { mime_type: "message/rfc822", encoding: "quoted-printable", content: @message.raw_message }
mail.message_id = "<#{SecureRandom.uuid}@#{Postal.config.dns.return_path}>"
mail.to_s
end
def queue
message = @server.message_db.new_message
message.scope = "outgoing"
message.rcpt_to = @message.mail_from
message.mail_from = @message.route.description
message.domain_id = @message.domain&.id
message.raw_message = raw_message
message.bounce = true
message.bounce_for_id = @message.id
message.save
message.id
end
def postmaster_address
@server.postmaster_address || "postmaster@#{@message.domain&.name || Postal.config.web.host}"
end
private
def body
<<~BODY
This is the mail delivery service responsible for delivering mail to #{@message.route.description}.
The message you've sent cannot be delivered. Your original message is attached to this message.
For further assistance please contact #{postmaster_address}. Please include the details below to help us identify the issue.
Message Token: #{@message.token}@#{@server.token}
Orginal Message ID: #{@message.message_id}
Mail from: #{@message.mail_from}
Rcpt To: #{@message.rcpt_to}
BODY
end
end
end

عرض الملف

@@ -62,7 +62,7 @@ RSpec.describe UnqueueMessageService do
end end
it "sends a bounce to the sender" do it "sends a bounce to the sender" do
expect(Postal::BounceMessage).to receive(:new).with(server, queued_message.message) expect(BounceMessage).to receive(:new).with(server, queued_message.message)
service.call service.call
end end
@@ -449,7 +449,7 @@ RSpec.describe UnqueueMessageService do
end end
it "sends a bounce" do it "sends a bounce" do
expect(Postal::BounceMessage).to receive(:new).with(server, queued_message.message) expect(BounceMessage).to receive(:new).with(server, queued_message.message)
service.call service.call
end end
@@ -479,7 +479,7 @@ RSpec.describe UnqueueMessageService do
end end
it "sends a bounce" do it "sends a bounce" do
expect(Postal::BounceMessage).to receive(:new).with(server, queued_message.message) expect(BounceMessage).to receive(:new).with(server, queued_message.message)
service.call service.call
end end
@@ -598,9 +598,9 @@ RSpec.describe UnqueueMessageService do
end end
it "does not send a bounce" do it "does not send a bounce" do
allow(Postal::BounceMessage).to receive(:new) allow(BounceMessage).to receive(:new)
service.call service.call
expect(Postal::BounceMessage).to_not have_received(:new) expect(BounceMessage).to_not have_received(:new)
end end
end end
@@ -616,7 +616,7 @@ RSpec.describe UnqueueMessageService do
end end
it "sends a bounce" do it "sends a bounce" do
expect(Postal::BounceMessage).to receive(:new).with(server, queued_message.message) expect(BounceMessage).to receive(:new).with(server, queued_message.message)
service.call service.call
end end