HTMLコンテンツからのプレーンテキストメールの解析(ASP.NET)
質問
そうです、要するに、私たちは基本的に、メール用のHTMLコンテンツが生成されるシステムをすでに持っています。完全ではありませんが、機能します。
これから、電子メールのプレーンテキストの代替を導出できる必要があります。すぐにジャンプしてRegExを作成し、メッセージから<*>
タグを削除することを考えていましたが、フォーマット情報(段落、改行、画像が必要なため、これは良くないことに気付きました。など)。
注:実際にメールを送信し、別のビューなどを設定しても問題ありません。これは HTMLからプレーンテキストを取得することのみです。
だから、私はいくつかのアイデアを考えています。回答として1つを投稿して、皆さんがどう思うかを確認しますが、私はそれをフロアに公開すると思いました。 :)
さらに説明が必要な場合は、叫んでください。
どうもありがとう、
ロブ
解決
マイソリューション
OK、だからここにある!私は自分の問題の解決策を考えましたが、それは魅力のように機能します!
今、私が設定したかった目標の一部を次に示します。
- メールのすべてのコンテンツは、(現在のHTMLコンテンツと同様に)ASPXページに残っている必要があります。
- クライアントコードに<!> quot;
SendMail("PageX.aspx")
<!> quot;と言う以外のことをさせたくありませんでした。 - あまり多くのコードを書きたくありませんでした。
- 可能な限り意味的に正しいコードを維持したかった(本当に狂ったようなハックはありません!)
プロセス
だから、これが私がやったことです:
- 電子メールメッセージのマスターページに移動します。 ASP.NET MultiView Control を作成します。このコントロールには、HTMLとPlainTextの2つのビューがあります。
- 各ビュー内に、実際のコンテンツのコンテンツプレースホルダーを追加しました。
- 次に、既存のASPXコード(ヘッダーやフッターなど)をすべて取得し、HTMLビューに貼り付けました。そのすべて、DocTypeおよびすべて。これにより、VSが少し揺れ動きます。 無視します。
- もちろん、PlainText環境でHTMLビューを最適に複製するために、PlainTextビューに新しいコンテンツを追加しました。
- マスター
Page_Load
にコードを追加し、QueryStringパラメーター<!> quot; type <!> quot;を確認しました。 <!> quot; html <!> quot;または<!> quot; text <!> quot;。 <!> quot; text <!> quot;に落ちます。存在しない場合。値に応じて、ビューを切り替えます。 - 次に、コンテンツページに移動して、PlainTextに相当する新しいプレースホルダーを追加し、必要に応じてテキストを追加します。
- 生活を楽にするため、
SendMail
メソッドをオーバーロードして必要なページの応答を取得し、<!> quot;type=html
<!> quot;を渡します。および<!> quot;type=text
<!> quot;必要に応じて AlternateView を作成します。
要約
つまり、要するに:
- ビューは実際の<!> quot; views <!> quot;を分離します。コンテンツ(HTMLおよびテキスト)
- マスターページは、QueryStringに基づいてビューを自動的に切り替えます。
- コンテンツページは、ビューの外観に責任を持ちます。
ジョブ完了!
このいずれかが不明な場合は、叫んでください。これについてのブログ投稿をいつか詳しく作成したいと思います。
他のヒント
私のアイデア
HTMLコンテンツに基づいてページを作成し、コントロールツリーを走査します。その後、コントロールからテキストを選択し、必要に応じてさまざまなコントロールを処理できます(たとえば、イメージにはALTテキストを使用し、
には<!> quot; _____ <!> quot;を使用します)。
HTMLメールがXHTML形式であることを確認して、標準のXMLツールを使用して簡単に解析し、プレーンテキストを出力する独自のDOMシリアライザーを作成できます。一般的なXHTMLをカバーするのはまだ多くの作業ですが、電子メールで使用する予定の限られたサブセットでは機能します。
別の方法として、別のプログラムへのシェルアウトを気にしない場合は、lynx Webブラウザーの-dumpスイッチを使用するだけです。