電子メール クライアント ( Outlook ) が HTML の mailto リンクからの特殊文字を受け入れるようにする方法はありますか? 本文にドイツ語の文字を含む mailto リンクを設定しようとしていますが、Outlook で奇妙な文字しか表示されません。
ありがとう
この問題の調査に 2 日間を費やしました。問題は、件名= 文字列にノルウェー文字などの非 ASCII 文字が含まれている場合、utf-8 でエンコードされた Web ページの mailto: リンクが Outlook ユーザーに対して機能しないことでした。例: 「mailto:mail@coretrek.no?subject=julegløgg og fårikål」
私がこれまでに学んだことから、Outlook は単に ASCII と iso-8859-1 文字以外を処理しません。そのため、上記の mailto リンク (IE または Firefox から) をクリックしようとすると、Outlook は文字のデコードに失敗し、件名が壊れたままになり、「奇妙な」文字が含まれます。
そのため、次のステップは、ページを ISO-8859-1 で再エンコードすることでした。私たちがしたことは、次のように、utf-8 ページの元の mailto リンクを「email-to-iso」サービスへのリンクに置き換えることでした:
このページは、mailto 文字を iso-8859-1 に変換し、ページ コンテンツ全体を iso-8859-1 で出力します。「location.href='mailto:...'」を含むページ上の JavaScript が、クライアントの電子メール クライアントを自動的に開くために使用されました。
これまでのところ、すべて問題ないように見えました。これは、Thunderbird と Outlook の両方で Internet Explorer で実際に動作します (Outlook Express と TB 2 を使用した WinXP 上の IE7 でテスト済み)。
しかし、現在の問題は実際には Firefox にあります。Firefox は、ISO-8859-1 でのみ検出され、ASCII では検出されない文字を含む URL エンコードされた URL をデコードできないようです (ノルウェー語の å のように、エンコードすると %E5 で表されます)。ページのエンコーディングが utf-8 の場合、同じ å が正しく処理されますが、Firefox の開発者は ISO-8859-1 文字セットとともに特殊文字をテストするのを忘れているようです。その結果、Firefox は、デコードされていない文字列 (å の代わりに %E5 を含む) を電子メール クライアントに渡します。そして驚くべきことに、これは Outlook (文字列自体のデコードを管理する) によって正しく処理されますが、おそらく Firefox と同じバグがある Thunderbird では処理されません。件名を URL エンコードしない場合、文字列は Thunderbird に正しく渡されますが、Outlook には渡されません。
また、php の htmlentities、htmlspecialchars、base64 エンコーディングなど、他のエンコーディング方法も試していますが、いずれも失敗します。
したがって、要約:
utf-8 でエンコードされたページ:
IEは常に失敗します
FF -> サンダーバード: OK
FF -> 見通し: 不合格
iso-8859-1 でエンコードされたページ:
IE: わかりました
FF -> Thunderbird: 件名が URL エンコードされている場合は失敗、そうでない場合は OK)
FF -> Outlook: 件名が URL エンコードされていない場合は失敗、エンコードされている場合は OK) (これは Windows であり、Ubuntu Linux FF と TB は常に正常に動作します)。
これが同じ問題を抱えている他の人に役立つことを願っています.
PHP で Outlook に最適な関数は rawurlencode() だと思います
urlencode メソッドを使用すると、探していることができると思います。JavaScript には文字列オブジェクトに対する .encodeURI() メソッドがあり、.NET にはHttpUtility.UrlEncodeメソッドがあります。
どの言語を使用していますか?
実際、解決策はhttp://blogs.msdn.com/ie/archive/2007/02/12/International-Mailto-URIs-in-IE7.aspxであり、それは良くありません。
基本的に、IE 7 および 8 では、ユーザーはインターネット オプションで高度な設定を有効にしている必要があります。これは、100% のユーザーが知らないことですが、有効になっていない可能性があります。
rawurlencode()
この機能は Outlook で最適に動作し、Firefox、Chrome、および IE でテスト済み
mailto: プロトコルの UTF-8 サポートを有効にする必要があります。
Outlook のメイン ウィンドウから、[ツール] -> [オプション] -> [メール形式] -> [国際オプション] -> [mailto: プロトコルの UTF-8 サポートを有効にする] をクリックします。
yandrが示したように、この問題はOutlookで進行中の問題です。
Microsoftは、適切に構成されたExchangeサーバーに接続された適切に構成されたOutlook 2003および2007がデフォルトでUnicodeをサポートすることを示すドキュメントを公開していますが、それは一般の人々にはあまり役立ちません。
参考までに、このために参照したい「標準」はRFC2047です。
この制限を回避するために私が実装した解決策(実際にはスウェーデン語で)は、mailto:リンクの代わりにWebフォームを使用することです。サーバー側でより多くのセットアップが必要ですが、連絡プロセスをより細かく制御できます。
これはあなたが聞きたかったことではないと確信していますが、世界がマイクロソフトの壊れたソフトウェアの使用をやめるまで、このような回避策が必要です。
mailto リンクを含むページを Outlook が期待するエンコーディングにする必要があるようです。状況についてこれ以上わからないので、ページを UTF-8 と ISO-8859-1 でエンコードしてみます。
関連する「状況の詳細」は、表示される奇妙な文字と、ページの現在のエンコーディングです。
SharePoint 2010 を使用している場合、Microsoft はこの問題を認識しており、これを解決するための機能をいくつか提供しているようです。
以下は、現在のページへのリンクを適切にエスケープします
escapeProperly(escapeProperlyCoreCore($(location).attr('href'), false, false, true))