مراية لـ
https://github.com/postalserver/postal.git
تم المزامنة 2025-12-01 05:43:04 +00:00
56 أسطر
1.7 KiB
Ruby
56 أسطر
1.7 KiB
Ruby
# 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_domain}>"
|
|
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.postal.web_hostname}"
|
|
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
|