Отправка 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);