diff --git a/lib/email/sender.rb b/lib/email/sender.rb
index ffe18cb95a6..464431a3ecf 100644
--- a/lib/email/sender.rb
+++ b/lib/email/sender.rb
@@ -72,7 +72,7 @@ module Email
# These are the links we add when a user uploads a file or image.
# Ideally we would parse general markdown into plain text, but that is almost an intractable problem.
url_prefix = Discourse.base_url
- @message.parts[0].body = @message.parts[0].body.to_s.gsub(/([^<]*)<\/a>/, '[\2](' + url_prefix + '\1)')
+ @message.parts[0].body = @message.parts[0].body.to_s.gsub(/([^<]*)<\/a>/, '[\2|attachment](' + url_prefix + '\1)')
@message.parts[0].body = @message.parts[0].body.to_s.gsub(/
]*)>/, '')
@message.text_part.content_type = 'text/plain; charset=UTF-8'
diff --git a/spec/jobs/user_email_spec.rb b/spec/jobs/user_email_spec.rb
index 5615078a927..a1117209be9 100644
--- a/spec/jobs/user_email_spec.rb
+++ b/spec/jobs/user_email_spec.rb
@@ -147,6 +147,15 @@ describe Jobs::UserEmail do
end
it "sends an email by default for a PM to a user that's been recently seen" do
+ upload = Fabricate(:upload)
+
+ post.update!(raw: <<~RAW)
+ This is a test post
+
+ test
+
+ RAW
+
Jobs::UserEmail.new.execute(
type: :user_private_message,
user_id: user.id,
@@ -154,9 +163,16 @@ describe Jobs::UserEmail do
notification_id: notification.id
)
- expect(ActionMailer::Base.deliveries.first.to).to contain_exactly(
- user.email
- )
+ email = ActionMailer::Base.deliveries.first
+
+ expect(email.to).to contain_exactly(user.email)
+
+ expect(email.parts[0].body.to_s).to include(<<~MD)
+ This is a test post
+
+ [test|attachment](#{Discourse.base_url}#{upload.url})
+ 
+ MD
end
it "doesn't send a PM email to a user that's been recently seen and has email_messages_level set to never" do