1

要するに、基本的に、電子メールの HTML コンテンツが生成されるシステムはすでに整っています。完璧ではありませんが、機能します。

これから、電子メールのプレーンテキストの代替を導き出すことができる必要があります。メッセージからタグを削除するためにすぐにジャンプして RegEx を作成することを考えていましたが、書式設定情報 (段落、改行、画像など) が必要なため、これは良くないこと<*>に気付きました。

注:実際にメールを送信したり、別のビューを設定したりすることは問題ありません。これは、HTML からプレーンテキストを取得することだけです。

というわけで、いろいろ考え中です。皆さんの考えを確認するために回答として投稿しますが、私はそれを床に公開すると思いました. :)

さらに説明が必要な場合は、叫んでください。

どうもありがとう、

ロブ

4

3 に答える 3

1

私の解決策

よし、これだ!私は自分の問題の解決策を考え出しましたが、それは魅力のように機能します!

さて、ここに私が設定したかったいくつかの目標があります:

  • 電子メールのすべてのコンテンツは、(現在の HTML コンテンツと同様に) ASPX ページに残す必要があります。
  • クライアント コードに " " 以外のことをさせたくありませんでしたSendMail("PageX.aspx")
  • あまり多くのコードを書きたくありませんでした。
  • 私は可能な限り意味的に正しいコードを維持したかったのです (本当にクレイジーなお尻のハックはありません!)。

プロセス

だから、これは私がやったことです:

  • 電子メール メッセージのマスター ページに移動します。ASP.NETマルチビュー コントロールを作成します。このコントロールには、HTML と PlainText の 2 つのビューがあります。
  • 各ビュー内に、実際のコンテンツのコンテンツ プレースホルダーを追加しました。
  • 次に、既存の ASPX コード (ヘッダーやフッターなど) をすべて取得し、HTML ビューに貼り付けました。そのすべて、DocType とすべて。これにより、VSが少しうなり声を上げます。それを無視します。
  • その後、もちろん、PlainText 環境で HTML ビューを最適に複製するために、新しいコンテンツを PlainText ビューに追加しました。
  • 次に、いくつかのコードを Master に追加し、Page_Load「html」または「text」のいずれかである QueryString パラメータ「type」をチェックしました。存在しない場合は「テキスト」にフォールオーバーします。値に応じて、ビューを切り替えます。
  • 次に、コンテンツ ページに移動して、同等の PlainText に新しいプレースホルダーを追加し、必要に応じてテキストを追加します。
  • 生活を楽にするために、SendMailメソッドをオーバーロードして必要なページの応答を取得し、" type=html" と " " を渡し、必要に応じてAlternateViewtype=textを作成しました。

要約すれば

つまり、要するに:

  • ビューは、コンテンツ (HTML とテキスト) の実際の「ビュー」を分離します。
  • マスター ページは、QueryString に基づいてビューを自動的に切り替えます。
  • ビューがどのように表示されるかは、コンテンツ ページが担当します。

仕事終わり!

これのいずれかが不明な場合は、叫んでください。これについては、いつか詳しくブログ記事を作成したいと思います。

于 2008-11-10T13:24:18.600 に答える
0

私のアイデア

HTML コンテンツに基づいてページを作成し、コントロール ツリーをトラバースします。次に、コントロールからテキストを選択し、必要に応じてさまざまなコントロールを処理できます (たとえば、画像には ALT テキストを使用し、HR には "_____" などを使用します)。

于 2008-11-10T09:56:38.037 に答える
0

HTML メールが XHTML 形式であることを確認して、標準の XML ツールを使用して簡単に解析できるようにし、プレーン テキストを出力する独自の DOM シリアライザーを作成します。一般的な XHTML をカバーするのはまだ大変な作業ですが、電子メールで使用する予定の限られたサブセットについては、うまくいく可能性があります。

または、別のプログラムにシェルアウトしてもかまわない場合は、-dump スイッチを lynx Web ブラウザーに使用することもできます。

于 2008-11-10T10:49:08.960 に答える