No Code Attached Yet bug
avatar ron4mac
ron4mac
18 May 2024

Steps to reproduce the issue

Set Joomla instance to use PHP Mail or Sendmail.
Perform some activity that causes email to be sent (registration, contact).

Expected result

Generated email is sent without issue

Actual result

Error: Could not instantiate mail function.

System information (as much as possible)

Joomla 4 or 5 on Siteground hosting

Additional comments

Some systems fail when attempting to send email which has the recipient name and email set to the same value (501 error).

libraries/src/Mail/MailTemplate.php

* @since   4.0.0
*/
 public function addRecipient($mail, $name = null, $type = 'to')
 {
     $recipient          = new \stdClass();
     $recipient->mail    = $mail;
     $recipient->name    = $name ?? $mail;    <<<<==== 
     $recipient->type    = $type;
     $this->recipients[] = $recipient;
}

addRecipient() is often called with only an email address, which causes the name to be set to the same as email.
This is causing failure on some servers (or their mail servers).

Possible workaround

$recipient->name = $name ?? strstr($mail,'@',true);

Additional preferable solution

All Joomla calls to this addRecipient() method provide an appropriate name argument.

avatar ron4mac ron4mac - open - 18 May 2024
avatar joomla-cms-bot joomla-cms-bot - change - 18 May 2024
Labels Added: No Code Attached Yet
avatar joomla-cms-bot joomla-cms-bot - labeled - 18 May 2024
avatar Fedik Fedik - change - 18 May 2024
Labels Added: bug
avatar Fedik Fedik - labeled - 18 May 2024
avatar Fedik
Fedik - comment - 18 May 2024

It is kind of server protection from users who trying to send spam.
I think Joomla should not try to set a name if it not provided, it is totally fine to have only an email.

avatar ron4mac ron4mac - change - 18 May 2024
The description was changed
avatar ron4mac ron4mac - edited - 18 May 2024

Add a Comment

Login with GitHub to post a comment