web-dev-qa-db-ja.com

swiftmailerがHTMLテンプレートを使用しないのはなぜですか?

私のカスタムモジュールのいくつかのフォームでは、条件がメールの送信をトリガーします。

_  public function save(array $form, FormStateInterface $form_state) {
    $entity = $this->entity;
    $status = parent::save($form, $form_state);
    $values=$form_state->getValues();
    if (($values['isurgent']['value']==1) && ($values['status']['value']==1)) {
      $iSeliste = \Drupal::currentUser()->id();
      $oSeliste = \Drupal::entityTypeManager()->getStorage('person')->load($iSeliste);
      $sSelite = $oSeliste->firstname->value . " " . $oSeliste->lastname->value;
      $sAction = ($values['action'][0]['value']==0)?"offre":"demande";
      $sDueDate = $values['duedate'][0]['value']->format("d/m/Y");
      _sendEmailForUrgentService($sSelite, $sAction, $sDueDate);
    }
_

sel.module:

_function _sendEmailForUrgentService($sSeliste, $sAction, $sDueDate) {
...some code...
  \Drupal::service('plugin.manager.mail')->mail('sel', 'emailforurgentservice', $sTo, 'fr',      $params);
  \Drupal::logger('sel')->info('Courriel pour service urgent : envoi effectué.');
}
_

私のhook_mail:

_function sel_mail($key, &$message, $params) {
  $sFrom = '[redacted]';
  $message['from'] = $sFrom;
  $message['headers'] = array(
    'Content-Type' => 'text/html',
    'bcc' => $params[3],
    'From' => $sFrom,
    'Sender' => $sFrom,
    'Return-Path' => $sFrom,
  );
  switch ($key) {
    case 'emailforurgentservice':
      $message['subject'] = '[Le Grenier à SÉL] Un service urgent requiert votre attention...';
      $sBody  = $params[0] . " a posté une " . $params[1] . " urgente qui est valide jusqu'au " . $params[2] . ".";
      $message['body'][] = check_markup(nl2br($sBody), 'full_html');
      break;
  }
}
_

Mailsystemの設定は次のとおりです。
enter image description here

そして、私のテーマテンプレートフォルダー(mysite/web/themes/contrib/mayo/templates /)には、メールテンプレート_swiftmailer--sel--emailforurgentservice.html.twig_があります。

_<html>
<head>
    <style type="text/css">     table tr td {
          font-family: Candara;
          font-size: 14px;
        }
    </style>
</head>
<body>
<div>
    <table width="800px" cellpadding="0" cellspacing="0">
        <tr>
            <td>
            <div style="padding: 0px 0px 0px 0px;">
                <p>
                    Chers S&Eacute;Listes,<br><br>
                    {{ body }} <br>
                    Vous pouvez la consulter <a href="http://lejardindepoissy.org/?q=sel_catalogue\">ici</a>.";<br>
                    Si vous ne la trouvez pas, c'est peut-être qu'elle a d&eacute;j&agrave; &eacute;t&eacute; satisfaite.";<br><br>
                    --<br>
                    Le Grenier à S&Eacute;L
                </p>
            </div>
            </td>
        </tr>
    </table>
</div>
</body>
</html>
_

メールが送信されます。ボディ以外はすべてOK(From、To、Bcc、Subject)です!
テンプレートで定義したものの代わりに、function sel_mail()で定義されている_$sBody_のコンテンツしかありません。
何か私が間違っている考えはありますか?

1
gbmapo

私の間違い!
メールテンプレートを追加しましたswiftmailer--sel--emailforurgentservice.html.twigサイトのユーザーに表示されるテーマである「mayo」テーマ。メールシステムは「現在の」テーマを使用するように設定されました。
私がテストを行ったとき、私は「ユーザー1」としてそれを行い、メールがトリガーされたときのテーマは「7」(管理テーマ)でした。
Maisystemの設定を変更しました:
enter image description here
そして、期待どおりに動作します!

1
gbmapo