1

私はデータで電子メールを作成する必要がある、PHPで書かれたデータベース駆動のWebサイトを持っています。すべてのデータとすべてのページはUTF-8でエンコードされており、多くのスウェーデン文字åäöが含まれています。私は私のmailtoリンクに次のように持っている:UTF-8でエンコードされたWebページからスウェーデン語の文字を使ってOutlookメールを作成する

<a href="mailto:[email protected]?body=Hej!%0D%0AåäöÅÄÖ">Mailto-link</a> 

と電子メールの本文が

Hej! 
åäöÅÄÖ 

として出てくることになっているこれは、Internet Explorer 8のとFirefox少なくとも(避難所を使用して動作しますOutlook 2007ではChromeやSafariでテストされていません)。ただし、Internet Explorer 7以前では、奇妙な文字としてåäöが出てきます。私たちのクライアントの多くは、IE 6と7を使いこなしています。

+0

IE6/7ではリンクが正しく表示されるのですか、Outlookが新しいメッセージを開いたときに表示されているのと同じ "不良"文字が表示されますか? – jesse

+0

@jesse:リンクがIE7で正しく表示されるため、ブラウザとOutlookの間にエラーが表示されます。 – Lizzan

答えて

1

"mailto:"リンクを使って解決しようとすると、ブラウザ/メールクライアントの組み合わせが無駄に多くなる可能性があります。理論的にはURLエンコーディングはうまくいくはずですが、過去にこれを手放すと、代わりにPHPから電子メールを送る方が簡単だとわかりました。

これは、スパマーがサーバーを電子メールゲートウェイとして使用できないようにするなど、他の課題を引き起こします(フォーム内の電子メールアドレスの代わりに連絡先ID番号を使用するなど)。 Captchaとレート制限は、おそらく良い考えです。

+0

あなたは本当にそれがすべての真実を持っているかもしれないと思うので、私は答えとしてこれをマークしています。 – Lizzan

0

URL encoding文字(改行だけではない)助けてください。 PHPでは、適切な関数はurlencode()になります。

+0

ありがとうございましたが、それは助けにならなかったし、加えて、電子メールであってもすべての "スペース"を "+"文字に変えました。 – Lizzan

+0

@Lizzanああ、あまりにも悪い!その場合、私は解決策を知らない。それはいつも同じメールクライアントですか? –

+0

@Pekka私はよく分かりませんが、おそらく1つの偽装や他の方法では常にOutlookです。しかし、試してくれてありがとう! =) – Lizzan

2

このような問題が発生した場合は、このJavascript警告文に問題の原因となっているコンテンツを置き、OperaやFirefoxなどのまともなブラウザのアドレスバーに貼り付けてください。例えば

javascript:alert(escape("problem-string-here")); 

、あなたが

javascript:alert(escape("åäöÅÄÖ"));

を実行する場合は、%E5%E4%F6%C5%C4%D6を取得します。警告ステートメントで表示されたテキストをコピーし、mailtoリンクで使用することができます。

mailto:[email protected]?body = Hey!%0a%E5%E4%F6%C5%C4%D6

+0

ゴリによって、私はそこでしばらく幸せになった!これを使用して、IE7からOutlook Express 6まで動作します。しかし、IE8とOutlook 2007では、特殊文字は完全に削除されています。少なくとも私がユーザーのコンピュータ構成を知っているときに私に解決策を与えるために+1してください。 – Lizzan

関連する問題