Перейти к содержанию

Отправка e-mail сообщений пользователям

1. Создание e-mail шаблона

Контент для e-mail сообщений хранится в директории dev/email приложения. Например, если посмотреть в директорию applications/core/dev/email (вам нужно находиться в режиме разработчика, чтобы увидеть эту папку), вы увидите все e-mail сообщения, отправляемые приложением core.

Все e-mail сообщения, отправляемые Invision Community, могут быть в двух форматах: HTML (для большинства e-mail клиентов) и простой текст (для устаревших e-mail клиентов или пользователей, кто намеренно не желает получать письма в простом тексте). Для каждого отправляемого типа существует два файла key.phtml (содержит HTML версию письма) и key.txt (версия с простым текстом).

Обратите внимание, что оба типа сообщений отправляются пользователю, и его почтовый клиент самостоятельно определит наиболее подходящий вариант для отображения.

Для отправки собственных e-mail писем, вы должны создать оба варианта. Их ключи могут быть любыми, но уникальными. Первая строка обоих файлов должна быть тегом:

<ips:template parameters="$parameter1, $parameter2, $email" />

Позже (на шаге 3), когда вы вызываете код для отправки своего e-mail письма, вы можете передать любые параметры, которые хотите  использовать в ваших шаблонах.

Внутри своих шаблонов вы можете использовать логику шаблонов и теги шаблонов, однако имейте ввиду, отправленное вами письмо, вероятно, будет с другим авторизованным пользователем при отправке сообщения, поэтому, поэтому не используйте ничего, что зависит от текущего авторизованного пользователя. И самое главное, не используйте тег шаблона {lang=""} (который всегда основывается на текущем авторизованном пользователе). Вместо этого вы можете получить использовать $email->language, являющийся объектом класса \IPS\Lang для правильного использования языка получателя.

Также есть специальный тег {dir}, который также можно использовать в шаблоне. Это либо ltr, либо rtl, в зависимости от языка получателя и применяется (особенно для таблиц) для обеспечения правильного расположения e-mail письма для языка. Пример использования:

<td dir='{dir}' valign='middle' align='center' style="...">

При создании своего шаблона HTML имейте в виду, что почтовые клиенты используют самые разные стандарты для браузеров, и многие обычные техники не могут быть использованы. Мы рекомендуем вам использовать шаблон из какого-либо приложения Invision Community в качестве основы, кроме того вы можете использовать такой инструмент, как Litmus.

При создании шаблона с простым текстом, вы не должны использовать какие-либо HTML теги, а пробелы принимаются во внимание; то есть любые пробелы в шаблоне будут отображаться в письме. 

2. Добавление языковой строки для темы письма

Система будет автоматически искать языковую строку с ключом mailsub__<app>_<key>, чтобы использовать её в качестве темы, поэтому необходимо добавить её в файл dev/lang.php. Обратите внимание, что вы можете использовать параметры, которые вы передаете шаблону - например, в файле applications/core/dev/lang.php можно увидеть следующее:

'mailsub__core_notification_new_likes'	=> '{$member->name|raw} liked your post',

3. Отправка e-mail сообщения

Фактический код для отправки электронной почты очень прост:

\IPS\Email::buildFromTemplate( 'app', 'key', $params )->send( $member );

Метод send() может быть передан как объект \IPS\Member (это лучший способ, так как система будет автоматически настраивать e-mail для пользователя, включая выбор правильного языка) или e-mail адрес в виде строки (что вы должны сделать, если нужно отправить e-mail письмо незарегистрированным пользователям), или массив любого из них для отправки нескольким получателям. Вы также можете передавать второй и третий параметры для пользователей в CC (копия ) и BCC (скрытая копия) соответственно.

Если вы хотите настроить контент сообщения в зависимости от пользователя, вы можете включить переменные в свой шаблон в формате *|key|* , а затем отправить так:

<td>
  *|some_key|*<br>
</td>

PHP:

\IPS\Email::buildFromTemplate( 'app', 'key', $params, TRUE )->mergeAndSend( array(
    'user1@example.com' => array(
        'some_key'   => 'value for user 1',
    ),
    'user2@example.com' => array(
        'some_key'   => 'value for user 2',
    )
) );

 




×
×
  • Создать...

Важная информация

Используя наш сайт вы соглашаетесь с нашей Политикой конфиденциальности