あなたが書いたコードは完全に正しいです。GMail、ThunderBird などの多くのメール クライアントでは、デフォルトでは画像が表示されません。[画像を表示]リンクをクリックする必要があります。このプロセスは自動化できません。CSRFを防止するためのセキュリティ対策です。
いくつかの参照は次のとおりです。
ライフハッカー:
デフォルトでは、Gmail は、ユーザーが画像を表示するように指示するまでメール内の画像をブロックすることで、スパム送信者からメールを保護しようとします。それは素晴らしいことですが、連絡先の画像を見たいときは少し面倒です.
Gmail でメールの画像が表示されなくなりました。- Google グループ
デフォルトで HTTPS を使用するように変更されたため、Gmail への接続は HTTPS で暗号化されます。ただし、広告やニュースレターなどの一部のメッセージには、HTTPS 経由ではなく HTTP 経由で送信される画像が含まれている場合があります。
Internet Explorer などのブラウザでは、HTTPS 経由で Gmail に接続しているときに、HTTP 経由で送信されているコンテンツにアクセスしようとしている可能性があることを示すポップアップが表示されます。これが、Internet Explorer で混合コンテンツの表示を有効にすることで、一部のユーザーが役に立った理由です。ただし、HTTP コンテンツの表示を有効にする場合は常に注意してください。一部のサイトには、ブラウザーの設定によってユーザーを保護しようとする危険なコンテンツや悪意のあるコンテンツが含まれている可能性があります。
電子メールが画像を直接読み込まないのはなぜですか
Gmail、yahoo、hotmail などの電子メール プロバイダーは、電子メールに画像を直接ロードしません。これらのサービスでは、画像の読み込みを許可する必要があります。なぜ彼らはこれを行うのですか?XSS/CSRFを防ぐためですか?
2 つの理由 - プライバシーと CSRF。
プライバシー
これにより、送信者は、私が知らないうちに、私がメールを開封したかどうかを判断できます。スパム送信者は、自分の「マーケティング」キャンペーンが何らかの影響を与えたかどうかを判断できます。
CSRF
CSRF が機能するには、被害者がリンクをクリックするか、攻撃者のページにアクセスする必要があります。電子メール クライアントが自動的に画像を表示する場合、電子メールを開くだけで CSRF 攻撃を仕掛けることができます。
たとえば、paypal に csrf 脆弱性があったとします。また、ユーザーがペイパルにログオンしていたとします。ここで、攻撃者はユーザーにメールを送信し<img
src="http://paypal.com/transferfunds?fromAccount=victim&toAccount=attacker"/>
ます。ユーザーがメールを開くとすぐに、資金が送金されます。