私はGoogleImageProxyの問題を理解したと思います。
これはキャッシングの概念に関連するものです。最近、phpコードをサーバーにデプロイしたが、画像をアップロードするのを忘れたとします。メールロジックで一度テストしました。システムがHTMLメールを生成した。このメールがGmailサーバーに到達すると、GoogleImageProxyはサイトから画像を取得して独自のプロキシサーバーに保存しようとします。画像のフェッチ中に、GoogleImageProxyは、欠落している画像に対して404ステータスを検出し、保護された画像に対して403ステータスを検出しました。GoogleImagesProxyは、これらのステータスを独自のプロキシサーバーに保存しました。
これでメールを開こうとしましたが、画像に対していくつかの404ステータスに気づきました。これは理解できるものです。一部の画像をアップロードするのを忘れたことにすぐに気付いたので、サーバーにアップロードしました。また、保護された画像に対するいくつかの権限を修正しました。
これですべて完了です。次に、php-emailスクリプトをもう一度実行してみます。その結果、GmailまたはHotmailの受信トレイに別のメールが届きます。画像のすべての問題を修正しました。これで、画像がメールのコンテンツに表示されるはずです。ただし、画像を表示することはできません。
ああ、おそらくあなたはあなたのブラウザのキャッシュをクリアするのを忘れていました。ブラウザのキャッシュをクリアして、Gmailまたはhotmailページをもう一度ロードします。しかし、結果は同じです。数十の修正/パッチを適用して、php-emailスクリプトを数千回実行してみてください。しかし、結果は同じです。改善なし。
実際の問題
一体何が起こっているのですか?説明させてください。アクセスログに移動して、GoogleImageProxyからのリクエストを見つけてください。メールで使用されているさまざまな画像の数に応じて、GoogleImageProxyからのリクエストが2つまたは3つしかないことに驚かれることでしょう。GoogleImageProxyは、不足している画像をアップロードして保護された画像の権限を設定することで画像の問題を修正した後でも、画像を取得しようとしませんでした。どうして?ブラウザのキャッシュをクリアしても影響はありません。GoogleImageProxyは、新しいメールの場合でも新しい画像を取得することはありません。これは、画像が最後のステータスコードとともにGoogleImageProxyにキャッシュされ、ユーザーのブラウザにはキャッシュされないためです。
GoogleImageProxyは、画像に独自の有効期限を設定しています。一ヶ月だと思います。そのため、画像の新しいコピーは有効期限後にフェッチされます。一ヶ月後ということです。GoogleImageProxyに強制的に画像をフェッチさせることはできません。ただし、メールに画像を表示することは重要です。解決策は何ですか?
ソリューション
以下は、GoogleImageProxyに画像をフェッチさせる唯一の方法です。
- 画像の名前をpng、jpg、またはgif拡張子のみの別の名前に変更します。
- 次のような画像のURLでは、どのような種類のクエリ文字列も使用しないでください
?t=34343
- 画像には、拡張子としてpng、jpg、またはgifを含める必要があります。
- 画像のURLを画像に直接マッピングする必要があります。
- 保護された画像にプロキシURLを使用する必要がある場合は、応答に適切なヘッダーを含める必要があります
Content-Type: image/jpeg
- ファイル拡張子とコンテンツタイプヘッダーは一致する必要があります
- ステータスコードは403、500などではなく200である必要があります
重要な注意点
php-emailスクリプトを実行するたびに、プロセス全体を繰り返します。なぜなら、GoogleImageProxyが画像をキャッシュするたびに、毎回同じプロセスを繰り返す必要があるからです。
うまくいけば、これでほとんどの人の問題が解決します。