Joomla Jmail addRecipient with name

2019-08-10 01:20发布

问题:

I am starting to use the Jmail method to send emails via an extension: http://docs.joomla.org/Sending_email_from_extensions

But the method doesn't seem to allow specifying names for the recipient, at least I haven't found the way to do it.

$mailer->addRecipient($recipient);

The documentation says: "mixed $recipient: Either a string or array of strings [e-mail address(es)]"

Anyone knows how to add the name to the recipient?

I'm using Joomla 2.5, the 1.5 method works.

回答1:

In Joomla! 2.5 (or starting with the Platform version 11.1) the function accepts two parameters:

public function addRecipient($recipient, $name = '')

where

$recipient - Either a string or array of strings [email address(es)]

$name - Either a string or array of strings [name(s)]

Usage:

$mailer = JFactory::getMailer();

$mailer->addRecipient('john.doe@example.com', 'John Doe');



回答2:

That's a BUG.

I just facing the same problem, no matter how I pass the arguments, it just can't specify the name.

And in the Joomla! source code /libraries/joomla/mail/mail.php, from line 167, the doc comment says:

/**
 * Add recipients to the email
 *
 * @param   mixed  $recipient  Either a string or array of strings [email address(es)]
 * @param   mixed  $name       Either a string or array of strings [name(s)]
 *
 * @return  JMail  Returns this object for chaining.
 *
 * @since   11.1
 */

Fine, but the variable $name NEVER be used in the function:

public function addRecipient($recipient, $name = '')
{
    // If the recipient is an array, add each recipient... otherwise just add the one
    if (is_array($recipient))
    {
        foreach ($recipient as $to)
        {
            $to = JMailHelper::cleanLine($to);
            $this->AddAddress($to);
        }
    }
    else
    {
        $recipient = JMailHelper::cleanLine($recipient);
        $this->AddAddress($recipient);
    }

    return $this;
}