From 24d3900a4e6296ba3895b5901325054232e8cb45 Mon Sep 17 00:00:00 2001 From: Ivan Yurchanka Date: Thu, 21 Aug 2025 07:19:34 +0200 Subject: [PATCH 1/2] Set all mail attributes including template --- lib/mailtrap/mail.rb | 19 +++++++++++-------- spec/mailtrap/mail_spec.rb | 12 ++++++++++++ 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/lib/mailtrap/mail.rb b/lib/mailtrap/mail.rb index dec7d02..20091ec 100644 --- a/lib/mailtrap/mail.rb +++ b/lib/mailtrap/mail.rb @@ -189,19 +189,21 @@ def batch_base_from_content( # rubocop:disable Metrics/ParameterLists # Builds a mail object from Mail::Message # @param message [Mail::Message] # @return [Mailtrap::Mail::Base] - def from_message(message) # rubocop:disable Metrics/AbcSize + def from_message(message) Mailtrap::Mail::Base.new( - from: prepare_addresses(address_list(message['from'])&.addresses).first, - to: prepare_addresses(address_list(message['to'])&.addresses), - cc: prepare_addresses(address_list(message['cc'])&.addresses), - bcc: prepare_addresses(address_list(message['bcc'])&.addresses), + from: prepare_addresses(message['from']).first, + to: prepare_addresses(message['to']), + cc: prepare_addresses(message['cc']), + bcc: prepare_addresses(message['bcc']), subject: message.subject, text: prepare_text_part(message), html: prepare_html_part(message), headers: prepare_headers(message), attachments: prepare_attachments(message.attachments), category: message['category']&.unparsed_value, - custom_variables: message['custom_variables']&.unparsed_value + custom_variables: message['custom_variables']&.unparsed_value, + template_uuid: message['template_uuid']&.unparsed_value, + template_variables: message['template_variables']&.unparsed_value ) end @@ -219,8 +221,9 @@ def address_list(header) header.respond_to?(:element) ? header.element : header.address_list end - # @param addresses [Array, nil] - def prepare_addresses(addresses) + # @param header [Mail::Field, nil] + def prepare_addresses(header) + addresses = address_list(header)&.addresses Array(addresses).map { |address| prepare_address(address) } end diff --git a/spec/mailtrap/mail_spec.rb b/spec/mailtrap/mail_spec.rb index 6bda49a..80c7e56 100644 --- a/spec/mailtrap/mail_spec.rb +++ b/spec/mailtrap/mail_spec.rb @@ -143,6 +143,18 @@ its(:from) { is_expected.to be_nil } end + context 'when template is set' do + let(:message_params) do + super().merge( + template_uuid: 'c0746b78-f422-46ce-bce5-6f52ad5aab7f', + template_variables: { first_name: 'John' } + ) + end + + its(:template_uuid) { is_expected.to eq('c0746b78-f422-46ce-bce5-6f52ad5aab7f') } + its(:template_variables) { is_expected.to eq('first_name' => 'John') } + end + %i[from to cc bcc].each do |header| context "when '#{header}' is invalid" do let(:message_params) { super().merge(header => 'invalid email@example.com') } From e9c147864a61d8deec19968696b7fd5f8462af08 Mon Sep 17 00:00:00 2001 From: Ivan Yurchanka Date: Thu, 21 Aug 2025 07:44:02 +0200 Subject: [PATCH 2/2] Release version 2.4.1 --- CHANGELOG.md | 3 +++ Gemfile.lock | 2 +- lib/mailtrap/version.rb | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e81eff9..e2a55ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## [2.4.1] - 2025-08-21 +- Set `template_uuid` and `template_variables` when building mail from `Mail::Message` + ## [2.4.0] - 2025-08-04 - Add Email Templates API diff --git a/Gemfile.lock b/Gemfile.lock index fc70857..b043759 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - mailtrap (2.4.0) + mailtrap (2.4.1) base64 GEM diff --git a/lib/mailtrap/version.rb b/lib/mailtrap/version.rb index f174f9c..0c8789d 100644 --- a/lib/mailtrap/version.rb +++ b/lib/mailtrap/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Mailtrap - VERSION = '2.4.0' + VERSION = '2.4.1' end