13

私は最近、Gmail のような Web メール クライアントが HTML メールに変更を加えることを知りました。たとえば、タグを追加target="_blank"するなどです。<a>

また、他の変更も同様に発生することを発見しました。PHP スクリプトから HTML メールを Gmail (および他の Web メール クライアント) に送信すると、リンクの URL に含まれる変数値が削除されます。たとえば、これは PHP コードで設定している値です。

$mailContent = '<p><a target="_blank" href="https://example.com/confirmation.html?verification=x1x1x1x1x1x1x1x&email=yyyy@email.com">click here to go to the web site and activate your account!</a></p>';

しかし、メールが Gmail で受信されると、HTML コードは次のようになります。

<p><a target="_blank" href="https://example.com/confirmation.html?verification=&email=">click here to go to the web site and activate your account!</a></p>

x1x1x1x1x1x1x1xとは、タグyyyy@email.com内から取り除かれています。<a>

URL に渡す変数の値を保護して、Gmail が変数を削除しないようにするにはどうすればよいですか?

4

4 に答える 4

3

Gmail のメッセージで[オリジナル/ソースを表示]をクリックして、URL が正しいかどうかを確認します。もしそうなら、Gmail が表示用にメッセージをフォーマットする方法に問題があることがわかります。ソースでも破損している場合は、コードを変更する Web ページ/php/CMS (使用していますか) に何かがあるかどうか疑問に思っていました。

@Crispが言ったように、URLエンコーディングを試す必要があります。これがW3 リファレンスです。

于 2013-03-27T19:00:44.763 に答える
2

HTML での電子メール送信では、 Quoted-printable Encoding が使用されます。$mailContent の問題は、「=」を =3D で表す必要があることです。

これを追加してみてください: $mailContent = quoted_printable_encode($mailContent);

于 2017-06-28T00:24:19.283 に答える
1

これは完璧な答えではないかもしれませんが、アプリケーションで許可されている場合は、URL 短縮サービスを何度も使用しました。

http://goo.gl/は、API の実装が非常に簡単で、Google が非常に高速であるため、私の好みです。クラスに関数があり、それを介して URL を実行し、必要な場所にリターンを送信するだけです。

于 2013-03-27T18:43:51.370 に答える