Skip to content

[6.2] MailTemplate should work with interface#47677

Open
laoneo wants to merge 4 commits intojoomla:6.2-devfrom
Digital-Peak:mailtemplate/interface
Open

[6.2] MailTemplate should work with interface#47677
laoneo wants to merge 4 commits intojoomla:6.2-devfrom
Digital-Peak:mailtemplate/interface

Conversation

@laoneo
Copy link
Copy Markdown
Member

@laoneo laoneo commented Apr 24, 2026

  • I read the Generative AI policy and my contribution is either not created with the help of AI or is compatible with the policy and GNU/GPL 2 or later.

Summary of Changes

The MailTemplate class should work with an injected MailerInterface and not concrete implementation to be more flexible. Additionally this pr deprecates the optional parameter to be able to remove the deprecated Factory usage.

Testing Instructions 1

  • Log in on the back end
  • Got to the global configuration server tab
  • Send a test mail

Actual result BEFORE applying this Pull Request

Mail is sent.

Expected result AFTER applying this Pull Request

Mail is sent.

Testing Instructions 2

  • Log in on the back end
  • Set HTML as mail format on /administrator/index.php?option=com_config&view=component&component=com_mails
  • Create a new user and enable Receive System Emails
  • Create a GET request task with the url https://downloads.joomla.org/api/v1/latest/cms and Manual execution as Execution Rule
  • In the advanced tab of the task form enable success notification and the respective user group from the previously created user image
  • Save the task
  • Click on the "Run Task"

Actual result BEFORE applying this Pull Request

Mail is sent with attachment in HTML format.

Expected result AFTER applying this Pull Request

Mail is sent with attachment in HTML format.

Link to documentations

Please select:

@CSGoat0
Copy link
Copy Markdown

CSGoat0 commented Apr 24, 2026

I have tested this item ✅ successfully on a59506a

I followed the instructions, everything works fine.


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/47677.

@exlemor
Copy link
Copy Markdown

exlemor commented Apr 24, 2026

I have tested this item ✅ successfully on a59506a

I have tested this successfully! Thanks @laoneo!


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/47677.

@richard67
Copy link
Copy Markdown
Member

RTC


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/47677.

@joomla-cms-bot joomla-cms-bot added the RTC This Pull Request is Ready To Commit label Apr 24, 2026
Copy link
Copy Markdown
Contributor

@MacJoom MacJoom left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please check

Comment thread libraries/src/Mail/MailTemplate.php Outdated
@joomdonation
Copy link
Copy Markdown
Contributor

I would question about the valid of this PR. Maybe someone with stronger OPP background should look at this more carefully

  • You modified code to allow using MailerInterface but in the code of MailTemplate class, you have code to check for a concrete implement. Is MailerInterface incomplete ?
  • In terms of features, although the intent is support MailerInterface, any implementation which is not Mail class will loose the functions provided by MailTemplate (because you hard code the check with a concrete implement before calling certain code):
  • Loose the feature to use custom SMTP parameters for each mail template
  • Lose the feature to handle attachments as string
@laoneo
Copy link
Copy Markdown
Member Author

laoneo commented Apr 27, 2026

All it does is to support the interface and doesn't restrict to the Mail class as we should work with interfaces. If you need these parameters like isHTML, then extend from Mail class. But there is no point to not work with interfaces. If I have a plugin which redirects everything to a custom Mailer service or whatever, there is no need to configure SMTP, etc. This brings a lot of flexibility while not loosing any settings from before.

@joomdonation
Copy link
Copy Markdown
Contributor

I think it just a fake support to interface because if you pass any implement of the interface which is not a Mail instance, you will loose the features of MailTemplate which I mentioned earlier. Plus the support interface while having to check for concrete implement seems not right to me.

That's what I see from looking at the change in this PR. I will leave it to other maintainers and release managers to look at it further and make final decision.

@laoneo
Copy link
Copy Markdown
Member Author

laoneo commented Apr 27, 2026

Due all respect, but your comment doesn't make sense at all. This is how support for the interface should be implemented in a backwards compatible way. Mailer instances which come from the factory doesn't have to be always a Mail class. If a plugin would implement it's own mailer (which is not a Mail class) and set it in the global container, then this code would badly break. When this gets merged, then we can convert the rest of the code away from Factory::getMailer, otherwise we will have to life forever with it.

@joomdonation
Copy link
Copy Markdown
Contributor

joomdonation commented Apr 27, 2026

Sorry, I do not see the point of supporting interface if it causes loosing features of MailTemplate. I have expressed my concerns in my earlier comments, it's normal that you do not agree or I am wrong. Let's wait for feedbacks from others.

@laoneo
Copy link
Copy Markdown
Member Author

laoneo commented Apr 27, 2026

No problem, don't expect it either.

@MacJoom
Copy link
Copy Markdown
Contributor

MacJoom commented Apr 29, 2026

I would like to have two new tests @exlemor , @CSGoat0 - with Html tested.

@richard67
Copy link
Copy Markdown
Member

Back to pending. See previous comment.


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/47677.
@joomla-cms-bot joomla-cms-bot removed the RTC This Pull Request is Ready To Commit label Apr 29, 2026
@MacJoom
Copy link
Copy Markdown
Contributor

MacJoom commented Apr 29, 2026

Please test attachments too.

@laoneo
Copy link
Copy Markdown
Member Author

laoneo commented Apr 30, 2026

I'v updated the testing instructions with HTML and attachment test.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment