1

私は自分の問題について他のいくつかの提案を見回しましたが、主な提案はiframeを使用することです...

でも!iframeを使いたくない。とにかく質問に:

基本的に、私はPHPで大学チームプロジェクト用のWebベースの電子メールクライアントを作成していて、HTML電子メールに問題があります...最終的に電子メールが適切に処理された後、私はいくつかの電子メールを調べて、1つとメールの背景がウェブサイトの本文タグの背景色に影響を与えました...

元のメッセージ本文を見てみましたが、通常のHTMLファイルと同じように、メールの本文タグにはCSSスタイル(背景色を含む)が含まれているため、メールの本文スタイルが適用されています。私のページの本文に...

基本的に、私が知る必要があるのは、iframeを使用して、メッセージ本文を含むdivの外部にコードが影響を与えないようにする以外の方法があるかどうかです...

ありがとう!

4

4 に答える 4

1

私は実際にこれをかなり理解しました、これは他の人に役立つかもしれません、それで!

私はGmailがそれをどのように行うかをより深く調べました...そして彼らは実際にbodyタグをdivタグに変換します...

$body = str_replace(array("<body ","</body>"),array("<div ","</div>"),$body);

また、いくつかの正規表現を使用して、電子メールからhead、html、およびdoctypeセクションを削除しました。これを行うことによる副作用についてはまだ調査中ですが、これまでにテストしたすべての電子メールでは、何の影響もありません。私が使用している正規表現が必要な場合は、ここにコメントしてください...

これは最も洗練されたソリューションではないかもしれませんが、うまくいくようです。

于 2012-04-08T13:54:15.433 に答える
0

私はNOと言うでしょう-または良い方法はありません。yahooメールをチェックしたところ、メールにもiframeを使用しています。彼らはそれについて考える時間がもっとあったと思います:-)

于 2012-04-07T20:43:16.913 に答える
0

基本的に、私が知る必要があるのは、iframeを使用して、メッセージ本文を含むdivの外部にコードが影響を与えないようにする以外の方法があるかどうかです...

もちろん、出力をキャンバスにレンダリングするjavascriptを使用して独自のHTMLパーサーを作成することもできます(たとえば、htmlcanvasなど)。まあ、あなたがあまりにも多くの時間を持っているなら;)

実際、iframeは私にはもっと実用的に見えます。それ以外の場合は、HTMLメールをプレーンテキストメールに変換します。それらは簡単に表示できます(HTMLコンテンツを新しいタブに表示することを提案できます)。

于 2012-04-07T20:45:28.007 に答える
0

これは非常に興味深い問題です。私はそれについて考えています。実際、次のようにjavascriptを使用して解決できると思います。

<html>
  <head></head>
  <body>
    <div id='email'>
      <!--here we the HTML code of the new page should be placed-->
    </div>
  </body>
</html>

配置したいコードが同じコードの場合

<html>
  <head></head>
  <body>
    Hi it's me
  </body>
</html>

次に、電子メール内のコードを取得し、HTMLタグとhead、bodyタグを削除できます。

var email = document.getElementById('email').innerHTML();

これがお役に立てば幸いです...頑張ってください

于 2012-04-08T17:08:35.817 に答える