diff --git a/app/models/ticket.rb b/app/models/ticket.rb
index 5844f271f..1dc8320ca 100644
--- a/app/models/ticket.rb
+++ b/app/models/ticket.rb
@@ -1004,7 +1004,9 @@ perform changes on ticket
quote: true,
)
- Ticket::Article.create(
+ (body, attachments_inline) = HtmlSanitizer.replace_inline_images(body, id)
+
+ article = Ticket::Article.create(
ticket_id: id,
to: recipient_string,
subject: subject,
@@ -1019,6 +1021,16 @@ perform changes on ticket
updated_by_id: 1,
created_by_id: 1,
)
+
+ attachments_inline.each do |attachment|
+ Store.add(
+ object: 'Ticket::Article',
+ o_id: article.id,
+ data: attachment[:data],
+ filename: attachment[:filename],
+ preferences: attachment[:preferences],
+ )
+ end
next
end
diff --git a/test/unit/ticket_trigger_test.rb b/test/unit/ticket_trigger_test.rb
index 88c679f9a..2a18340f8 100644
--- a/test/unit/ticket_trigger_test.rb
+++ b/test/unit/ticket_trigger_test.rb
@@ -4245,4 +4245,43 @@ class TicketTriggerTest < ActiveSupport::TestCase
end
+ test 'make sure attachments should be attached with content id' do
+ trigger1 = Trigger.create_or_update(
+ name: 'auto reply',
+ condition: {
+ 'ticket.action' => {
+ 'operator' => 'is',
+ 'value' => 'create',
+ },
+ 'ticket.state_id' => {
+ 'operator' => 'is',
+ 'value' => Ticket::State.lookup(name: 'new').id.to_s,
+ },
+ },
+ perform: {
+ 'notification.email' => {
+ 'body' => 'some text
#{ticket.customer.lastname}
#{ticket.title}
#{article.body}
',
+ 'recipient' => 'article_last_sender',
+ 'subject' => 'Thanks for your inquiry (#{ticket.title})!',
+ },
+ },
+ disable_notification: true,
+ active: true,
+ created_by_id: 1,
+ updated_by_id: 1,
+ )
+
+ ticket1, article1, user, mail = Channel::EmailParser.new.process({}, IO.binread('test/fixtures/mail65.box'))
+
+ assert_equal('aaäöüßad asd', ticket1.title, 'ticket1.title verify')
+ assert_equal('Users', ticket1.group.name, 'ticket1.group verify')
+ assert_equal('new', ticket1.state.name, 'ticket1.state verify')
+ assert_equal(2, ticket1.articles.count, 'ticket1.articles verify')
+ article1 = ticket1.articles.last
+ assert_match('Zammad ', article1.from)
+ assert_match('smith@example.com', article1.to)
+ assert_match('Thanks for your inquiry (aaäöüßad asd)!', article1.subject)
+ assert_match(/.+cid:.+?@zammad.example.com.+/, article1.body)
+ assert_equal('text/html', article1.content_type)
+ end
end