Отправка e-mail средствами Joomla

Способ для Joomla 4.x и 5.x:

    use Joomla\CMS\Factory;
    $mailer = Factory::getMailer();
    $sender = array($app->getCfg('mailfrom'), $app->getCfg('fromname'));
    $mailer->setSender($sender);
    $mailer->addRecipient($user->email, $user->name);
    $mailer->addReplyTo(Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.');
    $body = "html-код тела письма";
    $mailer->isHTML(true);
    $mailer->setSubject('Тема письма');
    $mailer->setBody($body);
    $send = $mailer->Send();
    if($send !== true) file_put_contents(__FILE__.".log",$send->getMessage());
	

либо краткая форма (и без use):

    Joomla\CMS\Factory::getMailer()->sendMail($fromEmail, $fromName, $email, $subject, $convertedBody, true, null, null, $filename );
	

Отправка шаблонного письма (пример из плагина регистрации пользователя):

use Joomla\CMS\Factory;
use Joomla\CMS\Mail\MailTemplate;
...
$app = Factory::getApplication();
$lang = $app->getLanguage();
$lang->load('plg_user_joomla', JPATH_ADMINISTRATOR);
$data = [
    'name'     => 'Юзверь',
    'sitename' => 'kryutosite',
    'url'      => 'ya.ru',
    'username' => Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.',
    'password' => 'asfadsgdfg',
    'email'    => Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.',
];
$mailer = new MailTemplate('plg_user_joomla.mail', $lang->getTag());
$mailer->addTemplateData($data);
$mailer->addUnsafeTags(['username', 'password', 'name', 'email']);
$mailer->addRecipient(Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.', 'user');
try {
    $res = $mailer->send();
} catch (\Exception $e) {
    $app->enqueueMessage($lang->_($e->getMessage()), 'warning');
}

Здесь шаблоном письма является языковая переменная PLG_USER_JOOMLA_NEW_USER_EMAIL_BODY.

 

 

Первый способ:

    global $app;
    $mailer = JFactory::getMailer();
    $sender = array($app->getCfg('mailfrom'), $app->getCfg('fromname'));
    $mailer->setSender($sender);
    $mailer->addRecipient($user->email, $user->name);
    $mailer->addReplyTo(Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.');
    $body = "html-код тела письма";
    $mailer->isHTML(true);
    $mailer->setSubject('Тема письма');
    $mailer->setBody($body);
    $send = $mailer->Send();
    if($send !== true) file_put_contents(__FILE__.".log",$send->message);
	

Второй способ (Joomla 2.x):

    JUtility::sendMail($fromEmail, $fromName, $email, $subject, $convertedBody, true, null, null, $filename );
	

Третий способ (Joomla 3.x):

    JFactory::getMailer()->sendMail($from, $fromName, $recipient, $subject, $body, $mode = false, $cc = null, $bcc = null, $attachment = null, $replyTo = null, $replyToName = null);