2

Joomla 2.5.8 Web サイトを実行すると、サーバーで生成されたすべての電子メールがスパムとしてマークされます (ただし、gmail のみ!)。

優れたリソースhttp://www.mail-tester.comでテストを実行しましたが、唯一のマイナス スコアは (spamassassin テスト) です。

-1.105      MIME_HTML_ONLY      Message only has text/html MIME parts
You should also include a text version of your message (text/plain)

コードを調べたところ、librarys/joomla/mail/mail.php が AltBody for Text に相当するものを設定していないことがわかりました。私は試した:

public function setBody($content)
{
    [...]
    if (empty($this->AltBody))
        $this->AltBody =JMailHelper::cleanText( strip_tags( $content));

そしてそれは動作します!(メールテスターで10/10)。しかし、それは確かに醜いです。

私の質問は次のとおりです。

  • これを Joomla と見なす必要があります。バグとファイル?
  • コアファイルをハッキングすることなく、よりクリーンなソリューションはありますか?おそらくいくつかの構成ですか?

それ以外の場合は、オーバーライドを実行するプラグインを作成します。これは非常に重要です。なぜなら、gmail でスパム フォルダーを見つけることができないように見える 20% の顧客を失っているからです!!!そして、私はコア ハッキングのような気がしません。 30 サイト。

4

2 に答える 2

4

間違いなく、CMS で報告できるバグです。システムがそれを処理する必要があります。バグの報告を開始する方法は次のとおりです: https://github.com/joomla/joomla-cms/blob/master/CONTRIBUTING.md

また、あなたが言ったようにコアファイルをハッキングするのではなく、彼のオーバーライドを処理するプラグインを作成できます。ここで、必要に応じてコアクラスをオーバーライドできる基本プラグインをまとめました: https://gist.github.com/dongilbert/323​​7387

ご覧のとおり、それほど複雑なことは何も行われていません。まず、Joomla にいることを確認します。それ以外の場合は終了します。次に、Joomla の命名規則に従ってクラスを定義し、構成ファイルをクラス コンストラクトに含めます。構成ファイルは、クラスがオートローダーに登録される場所です。

構成ファイルで、OVERRIDES パスを定義してから、JLoader へのクラスの登録を開始します。私は物事を整理しておくのが好きなので、オーバーライド ディレクトリはルート joomla ディレクトリの構造を反映しており、オーバーライドしたいクラスへのパスのみが含まれています。つまり、JFormField をオーバーライドしたい場合、次のような構造になります (オーバーライド ディレクトリを含む):

オーバーライド/ライブラリ/joomla/form/field.php

そして、config.php に次のように追加します。

JLoader::register('JFormField', OVERRIDES.'/libraries/joomla/form/field.php', true);

これを使用して、コア コンポーネント クラスをオーバーライドすることもできます。次のように com_media のビュー クラスをオーバーライドするために使用しました。

オーバーライド/コンポーネント/com_media/view/imageslist/view.html.php

そしてもちろん、これを設定に追加します:

JLoader::register('MediaViewImagesList', OVERRIDES.'/components/com_media/view/imageslist/view.html.php', true);

上記の要点リンクからプラグインをダウンロードできます。Joomla サイトにインストールする準備ができました。最初にアップロードしてから、オーバーライド ディレクトリをプラグイン ディレクトリに追加します。最初にすべてのファイルを追加してアップロードする場合は、overrides.xml ファイルに次を追加してください。

<folder>オーバーライド</folder>

于 2013-03-21T20:27:34.213 に答える
2

これをありがとう!Joomla 3 でも同じ問題に気付きました。

とにかく私は簡単にそれを解決しました

$mailer = JFactory::getMailer();
(...)
$mailer->setBody($messagebody);
$mailer->AltBody =JMailHelper::cleanText( strip_tags( $messagebody));

ソースを編集する必要はありません。また、これはバグとして報告する必要があると思います (AltBody をより適切に設定できるようにする必要があります)。 .

于 2015-02-17T19:19:45.567 に答える