Email
Elgg имеет возможность отправлять электронные письма. Это можно сделать напрямую, используя такие функции, как elgg_send_email() и elgg_notify_user(), или косвенно через систему уведомлений. Ниже обзор функций системы электронной почты.
HTML-письма
Как администратор, вы можете настроить ваш сайт так, чтобы все исходящие письма были HTML-письмами или просто текстовыми письмами. HTML-письма включены по умолчанию. При включении содержимое письма будет обёрнуто в элементы HTML, и будет применён некоторый CSS. Это позволяет разработчикам тем стилизовать письма.
Соответствующие представления для форматирования и стилизации писем можно найти в views/default/email.
CSS будет встроено автоматически, поэтому оно будет работать в большинстве почтовых клиентов. Если ваше письмо содержит изображения, эти изображения могут быть преобразованы во встроенные изображения с кодировкой base64 (по умолчанию) или вложения. Преобразованные изображения — это лучший способ обеспечить согласованное отображение изображений в различных клиентах.
Вместо автоматического преобразования сообщения в HTML вы также можете предоставить своё собственное html_message в params уведомления. html_message должно быть строкой. Elgg автоматически попытается встроить предоставленный CSS, присутствующий в параметре css. Если вы не хотите встраивать CSS, вам нужно установить параметр convert_css в false. Ниже пример пользовательской HTML-части.
elgg_send_email([
'from' => 'from@elgg.org',
'to' => 'to@elgg.org',
'subject' => 'Test Email',
'body' => 'Welcome to the site',
'params' => [
'html_message' => '
<p>Welcome to the site</p>
<img src="site_logo.png"/>
',
'convert_css' => true,
'css' => 'p { padding: 10px;}'
],
]);
Вложения
elgg_notify_user() или поставленные в очередь уведомления поддерживают вложения для уведомлений по электронной почте, если они предоставлены в $params. Чтобы добавить одно или несколько вложений, добавьте ключ attachments в $params, который является массивом вложений. Вложение должно быть в одном из следующих форматов:
ElggFile, который указывает на существующий файлМассив с содержимым файла
Массив с путём к файлу
// this example is for elgg_notify_user()
$params['attachments'] = [];
// Example of an ElggFile attachment
$file = new \ElggFile();
$file->owner_guid = <some owner_guid>;
$file->setFilename('<some filename>');
$params['attachments'][] = $file;
// Example of array with content
$params['attachments'][] = [
'content' => 'The file content',
'filename' => 'test_file.txt',
'type' => 'text/plain',
];
// Example of array with filepath
// 'filename' can be provided, if not basename() of filepath will be used
// 'type' can be provided, if not will try a best guess
$params['attachments'][] = [
'filepath' => '<path to a valid file>',
];
$recipient->notify('some_action', $on_some_object, $params);
// or
elgg_notify_user($recipient, 'some_action', $on_some_object, $params);
Форматирование адреса электронной почты
Elgg использует библиотеку Symfony для помощи в форматировании адресов электронной почты: \Symfony\Component\Mime\Address.
// the constructor takes two variables
// first is the email address, this is REQUIRED
// second is the name, this is optional
$address = new \Symfony\Component\Mime\Address('example@elgg.org', 'Example');
// this will result in 'Example <example@elgg.org>'
echo $address->toString();
Доступны некоторые вспомогательные функции
\Symfony\Component\Mime\Address::create($string)вернёт класс\Symfony\Component\Mime\Addressс установленными email и именем, при условии предоставления отформатированной строки (например,Example <example@elgg.org>)