Silverstripe 3: Добавить изображение логотипа в пользовательский шаблон электронной почты - PullRequest
2 голосов
/ 04 июля 2019

У меня есть пользовательский шаблон электронной почты, который я использую в качестве электронного письма для проверки, когда пользователь регистрируется на моем сайте Silverstripe, но он не отображает изображения.

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

Мой код для отправки письма:

$email = MemberConfirmationEmail::create($this, $member);
$approve = Controller::join_links(
    Director::baseURL(),
    'member-approval',
    $member->ID,
    '?token=' . $member->ValidationKey
);
$email->setSubject('Registration Account Confirmation'));
$email->setTemplate('CustomMemberConfirmationEmail');
$email->populateTemplate(array('ApproveLink' => Director::absoluteURL($approve)));
$email->send();

Этот шаблон электронной почты содержит тег изображения с изображением, сохраненным по адресу:

themes/mytheme/assets/images/mylogo.png

Все это прекрасно работает, за исключением рендеринга изображения.

Я что-то упустил или сохранил не в том месте?

1 Ответ

1 голос
/ 04 июля 2019

При отправке электронного письма нам необходимо убедиться, что все наши URL являются абсолютными, а не относительными URL.

Мы можем сделать это, используя $AbsoluteLink для ссылок и добавляя $AbsoluteBaseURL к ресурсам.

В SilverStripe 3 мы можем сделать это для ресурса со следующим:

<img src="{$AbsoluteBaseURL}{$ThemeDir}/assets/images/mylogo.png" alt="$SiteConfig.Title" />
...