web-dev-qa-db-ja.com

KunenaのHTMLメールを作成する方法

Kunenaがインストールされたjoomlaサイトがあります。私のユーザーは、フォーラムから送信されたメールのレイアウトに満足していません。

このメールの作成を担当するコードの一部を次に示します。

protected function createEmailBody($subscription, $subject, $url, $message, $once) {
    $config = KunenaFactory::getConfig();
    if ($subscription) {
        $msg1 = $this->get ( 'parent' ) ? JText::_ ( 'COM_KUNENA_POST_EMAIL_NOTIFICATION1' ) : JText::_ ( 'COM_KUNENA_POST_EMAIL_NOTIFICATION1_CAT' );
        $msg2 = $this->get ( 'parent' ) ? JText::_ ( 'COM_KUNENA_POST_EMAIL_NOTIFICATION2' ) : JText::_ ( 'COM_KUNENA_POST_EMAIL_NOTIFICATION2_CAT' );
    } else {
        $msg1 = JText::_ ( 'COM_KUNENA_POST_EMAIL_MOD1' );
        $msg2 = JText::_ ( 'COM_KUNENA_POST_EMAIL_MOD2' );
    }

    $msg = $msg1 . " " . $config->board_title . "\n\n";
    // DO NOT REMOVE EXTRA SPACE, JMailHelper::cleanBody() removes "Subject:" from the message body
    $msg .= JText::_ ( 'COM_KUNENA_MESSAGE_SUBJECT' ) . " : " . $subject . "\n";
    $msg .= JText::_ ( 'COM_KUNENA_CATEGORY' ) . " : " . $this->getCategory()->name . "\n";
    $msg .= JText::_ ( 'COM_KUNENA_VIEW_POSTED' ) . " : " . $this->getAuthor()->getName('???', false) . "\n\n";
    $msg .= "URL : $url\n\n";
    if ($config->mailfull == 1) {
        $msg .= JText::_ ( 'COM_KUNENA_MESSAGE' ) . " :\n-----\n";
        $msg .= $message;
        $msg .= "\n-----\n\n";
    }
    $msg .= $msg2 . "\n";
    if ($subscription && $once) {
        if ($this->parent) {
            $msg .= JText::_ ( 'COM_KUNENA_POST_EMAIL_NOTIFICATION_MORE_READ' ) . "\n";
        } else {
            $msg .= JText::_ ( 'COM_KUNENA_POST_EMAIL_NOTIFICATION_MORE_SUBSCRIBE' ) . "\n";
        }
    }
    $msg .= "\n";
    $msg .= JText::_ ( 'COM_KUNENA_POST_EMAIL_NOTIFICATION3' ) . "\n";
    return JMailHelper::cleanBody ( $msg );
}

それで、私はこのサイトのロゴの画像をこのように下部に追加することにしました:

$msg .= ('<img src="http://mysite.me.ke/templates/jsn_nuru_free/images/colors/red/logo.png" width="100"/>');

メールが送信されたとき、私が与えたものと同じものを返しました

 <img src="http://mysite.me.ke/templates/jsn_nuru_free/images/colors/red/logo.png" width="100"/>

だから私は次のようにhtmlspecialchars_decode()php関数を使うべきだと思いました:

$msg .= htmlspecialchars_decode('<img src="http://mysite.me.ke/templates/jsn_nuru_free/images/colors/red/logo.png" width="100"/>');

しかし、それでも新しいことは何もありません。親切に私を助けてください!

2
JacksiroKe

次のように、サイトのパスを定義するときにJUri::root()を使用することをお勧めします。

$msg .= '<img src="' . JUri::root() . 'templates/jsn_nuru_free/images/colors/red/logo.png" width="100"/>';

これに加えて、画像タグの外側に追加した角括弧は不要なので削除しました

1
Lodder

次のように、サイトのパスを定義するときにJUri :: root()を使用してみてください。

   protected function createEmailBody($subscription, $subject, $url, $message, $once) {
        $config = KunenaFactory::getConfig();
        if ($subscription) {
            $msg1 = $this->get ( 'parent' ) ? JText::_ ( 'COM_KUNENA_POST_EMAIL_NOTIFICATION1' ) : JText::_ ( 'COM_KUNENA_POST_EMAIL_NOTIFICATION1_CAT' );
            $msg2 = $this->get ( 'parent' ) ? JText::_ ( 'COM_KUNENA_POST_EMAIL_NOTIFICATION2' ) : JText::_ ( 'COM_KUNENA_POST_EMAIL_NOTIFICATION2_CAT' );
        } else {
            $msg1 = JText::_ ( 'COM_KUNENA_POST_EMAIL_MOD1' );
            $msg2 = JText::_ ( 'COM_KUNENA_POST_EMAIL_MOD2' );
        }

        $msg = $msg1 . " " . $config->board_title . "\n\n";
        // DO NOT REMOVE EXTRA SPACE, JMailHelper::cleanBody() removes "Subject:" from the message body
        $msg .= JText::_ ( 'COM_KUNENA_MESSAGE_SUBJECT' ) . " : " . $subject . "\n";
        $msg .= JText::_ ( 'COM_KUNENA_CATEGORY' ) . " : " . $this->getCategory()->name . "\n";
        $msg .= JText::_ ( 'COM_KUNENA_VIEW_POSTED' ) . " : " . $this->getAuthor()->getName('???', false) . "\n\n";
        $msg .= "URL : $url\n\n";
        if ($config->mailfull == 1) {
            $msg .= JText::_ ( 'COM_KUNENA_MESSAGE' ) . " :\n-----\n";
            $msg .= $message;
            $msg .= "\n-----\n\n";
            $msg .= '<img src="' . JUri::root() . 'templates/jsn_nuru_free/images/colors/red/logo.png" width="100"/>';
        }
        $msg .= $msg2 . "\n";
        if ($subscription && $once) {
            if ($this->parent) {
                $msg .= JText::_ ( 'COM_KUNENA_POST_EMAIL_NOTIFICATION_MORE_READ' ) . "\n";
            } else {
                $msg .= JText::_ ( 'COM_KUNENA_POST_EMAIL_NOTIFICATION_MORE_SUBSCRIBE' ) . "\n";
            }
        }
        $msg .= "\n";
        $msg .= JText::_ ( 'COM_KUNENA_POST_EMAIL_NOTIFICATION3' ) . "\n";
        return JMailHelper::cleanBody ( $msg );
    }
1
JacksiroKe