Gmail'in yeni resim önbelleğe alma özelliği, haber bültenindeki resim bağlantılarını bozuyor


105

Sitem için kayıt işlemi tamamlandıktan sonra gönderilen bazı otomatik e-postalarım var.

Yakın zamana kadar iyi çalıştılar. Şimdi Google'ın yeni sistemi görüntüleri yeniden yazıyor ve önbelleğinde depoluyor (sözde)

Bununla birlikte, Google'ın resim bağlantılarımı yeniden yazması onları tamamen bozarak 500 hatası ve bozuk bir bağlantı görüntüsü veriyor.

Diyelim ki benim normal görsel url:

http://www.mysite.com/images/pic1.jpg

Google bunu şuraya yeniden yazıyor:

https://ci5.googleusercontent.com/proxy/vI79kajdUGm6Wk-fjyicDLjZbCB1w9NfkoZ-zQFOB2OpJ1ILmSvfvHmE56r72us5mIuIXCFiO3V8rgkZOjfhghTH0R07BbcQy5g=s0-d-e1-ft#http://www.mysite.com/images/pic1.jpg

Ancak, bu URL'de hiçbir şey yok.

Resim hatalarını gösteren e-posta

Yani, ya Google tarafından oluşturulan bağlantılarda bir sorun var ya da resimler googleusercontent sunucusuna yüklenmiyor, ancak sorunu nasıl çözeceğime dair hiçbir fikrim yok.

Amazon EC2'de PHP, phpmailer kitaplığı ve bir Ubuntu sunucusu kullanıyorum, ancak bunun sorunla ilgili olduğundan emin değilim.


sunucunuzda herhangi bir güvenlik özelliğiniz veya görüntüye hizmet eden mantığınız var mı? yalnızca sınırlı bir süre için mi yoksa bu tür özellikler için mi mevcut?
Pixou

Görüntüleri görüntülemek için herhangi bir güvenlik özelliği veya oturum açma sistemi yoktur, bunlar sistemde ortak bir klasördedir. Orijinal bağlantıyı ziyaret ederseniz, resimler görüntülenebilir. Sorun, Google'ın url'yi yeniden yazmasının ya resmi sunucularına yüklememesi ya da kullanıcıyı siteme doğru şekilde yönlendirmemesidir.
RonnyKnoxville

1
Bloglar ve gönderiler incelendikten sonra, bu rastgele sayı için gerçek bir çözüm bulunmadı (Mart 2013). Yanıldım ?
kheraud

4
bu beni kesinlikle deli ediyor. google e-postayı bozdu. Google forumlarında ilgili birkaç başlıkta aktif oldum ve ilgi göremiyorum. Aralık 2013'ün başından beri bu sorun
Nathan Beach

Bu herhangi bir yere gitti mi? Saçımı çekiyorum. Görüntülere herkes erişebilir, doğrudan onlara giderken sorunsuz yüklenir, içerik türü eşleşmeleri ve Google'ın proxy sunucusu günlüklerimde 200 OK dışında hiçbir şey almıyor. Gmail'de neden resimlerin görünmeyeceği konusunda hiçbir fikrim yok.
Matt Brunmeier

Yanıtlar:


83

GoogleImageProxy sorununu çözdüğümü düşünüyorum.

Bu, CACHING konseptiyle ilgili bir şeydir. farz edelim ki, php kodunuzu son zamanlarda sunucunuza yerleştirdiniz ama görüntüleri yüklemeyi unuttunuz. e-posta mantığınızla bir kez test ettiniz. sisteminiz bir HTML e-postası oluşturdu. Bu e-posta gmail sunucusuna ulaştığında, GoogleImageProxy, görüntüleri sitenizden kendi proxy sunucusuna alıp saklamaya çalışacaktır. GoogleImageProxy, görüntüleri getirirken, eksik görüntülerinize karşı 404 ve bazı korumalı görüntülere karşı 403 durumu buldu. GoogleImagesProxy bu durumları kendi proxy sunucusunda sakladı.

Şimdi e-postanızı açmaya çalıştığınızda, resimlerinizde bazı 404 durumu fark ettiniz. Bu anlaşılabilir bir şey. Bazı görüntüleri yüklemeyi unuttuğunuzu hemen fark ettiniz, bu yüzden onları sunucunuza yüklediniz. ve ayrıca korumalı görüntülere karşı bazı izinleri düzelttiniz.

Artık işiniz bitti. Şimdi php-e-posta betiğinizi bir kez daha çalıştırmayı deneyin. Sonuç olarak, Gmail veya Hotmail gelen kutunuza başka bir e-posta alırsınız. resimlerinizle ilgili tüm sorunları çözdünüz. Şimdi resimler e-posta içeriğinizde görüntülenmelidir. ama hala görüntüleri göremiyorsunuz.

Ah, muhtemelen tarayıcınızın önbelleğini temizlemeyi unuttunuz. Tarayıcınızın önbelleğini temizleyin ve gmail veya hotmail sayfasını bir kez daha yükleyin. Ancak sonuç yine aynı olacak. Düzinelerce düzeltme / yama uygulamayı deneyin ve php-e-posta betiğinizi binlerce kez çalıştırmayı deneyin. Ama sonuç yine aynı olacak. İlerleme yok.

GERÇEK SORUN

Neler oluyor? Size açıklayayım. Erişim günlüğünüze gidin ve GoogleImageProxy'den gelen istekleri bulmaya çalışın. E-postanızda kullanılan farklı görüntülerin sayısına bağlı olarak GoogleImageProxy'den yalnızca 2 veya 3 üç istek olacağını görünce şaşıracaksınız. GoogleImageProxy hiçbir zaman görüntüleri getirmeyi denemedi. Eksik resimleri yükleyerek ve korumalı görüntüler için izinler ayarlayarak resimlerinizle ilgili sorunları çözdükten sonra bile. Neden? Tarayıcınızın önbelleğini temizlemenin hiçbir etkisi yoktur. GoogleImageProxy, yeni e-postanız için bile yeni görüntüleri asla getirmez çünkü görüntüler artık son durum kodlarıyla birlikte GoogleImageProxy'de önbelleğe alınır ve kendi tarayıcınızda önbelleğe alınmaz.

GoogleImageProxy, görüntüler için kendi son kullanma tarihini belirledi. Sanırım bir ay. bu yüzden şimdi görüntülerin yeni kopyaları son kullanma tarihinden sonra alınacaktır. Yani bir ay sonra. GoogleImageProxy'yi görüntüleri getirmeye zorlayamazsınız. Ancak e-postanızdaki resimleri görüntülemeniz sizin için önemlidir. Çözüm ne olabilir?

ÇÖZÜM

GoogleImageProxy'yi resimlerinizi getirmeye zorlamanın tek yolu şudur:

  • Resimlerinizi yalnızca png, jpg veya gif uzantılarıyla başka bir adla yeniden adlandırın.
  • Görsel URL'nizde aşağıdaki gibi herhangi bir sorgu dizesi kullanmayın ?t=34343
  • Resminiz bir uzantı olarak png, jpg veya gif içermelidir.
  • görsel url'niz doğrudan resminize eşlenmelidir.
  • Korunan resimleriniz için bir proxy url kullanmanız gerekiyorsa, yanıtınız aşağıdaki gibi uygun başlığı içermelidir. Content-Type: image/jpeg
  • Dosya uzantısı ve içerik türü başlığı eşleşmelidir
  • Durum kodu 403, 500 vb. Yerine 200 olmalıdır.

ÖNEMLİ NOT

Her php-e-posta betiği çalıştırması için tüm süreci tekrar etmeye çalışın. çünkü GoogleImageProxy her seferinde resimlerinizi önbelleğe alacak ve her yeni denemede aynı işlemi tekrarlamanız gerekecek.

Umarım bu, çoğu insan için sorunu çözecektir.


9
tl; dr: muhtemelen .svg kullanıyorsunuz, bunun yerine .png .jpg veya .gif kullanın
taylorstine

2
evet, svg kullanma;)
Alexandre Martini

1
Dosya adında boşluk bulunan Azure Blob Depolamadan sunulan bir imajımız vardı. Resim, Gmail'de doğru şekilde gösterilmez. Dosya adındaki alanı kaldırdığımızda sorunu düzeltti.
Narthring

1
@AlexandreMartini neden SVG kullanmıyorsunuz? Logo SVG'de en iyisidir, değil mi?
trainoasis

1
Görüntü yollarınızı urlencode ettiğinizden emin olun. Yolda bir boşluk vardı ve tarayıcılar onu% 20 ile değiştirecek olsa da, gmail önbelleği bunu yapmıyor ve bozuk bir bağlantı olarak görüyor.
Chad Richardson

29

Örneğinize göre, geleneksel uzantılar (.jpg, .png, .gif) kullanıyormuşsunuz gibi görünüyor. Bu konudaki bazı kişiler , karşılaştığınız aynı sorunları açıklayarak, bu uzantıları kullanmanın sorunu çözdüğünü belirtti.

Diğer olası çözümler:


1
Bunlar, bu sorunu kendim araştırırken bulduğum kaynakların çoğu, maalesef hiçbiri bana aradığım cevabı vermiyor. Hala bir yanıt
bulamadan

@JackalopeZero, bu konuyu haber bülteni dışında bağımsız olarak çoğaltmayı denediniz mi? Kişisel ve şirket Gmail'imde başarılı sonuçlarla denedim. Bunun bir sorun olduğunu biliyorum ama belki de resimlerle yeni bir e-posta oluşturmak, neler olduğuna ışık tutabilir.
JSuar

4
Uzantılarla ilgili ipucu için teşekkürler. .svgResimleri kullanıyordum ve bunların Google'ın proxy'si tarafından desteklenmediği doğrulandı .
Nick Merrill

1
Bugün bununla kendim karşılaştım. Benim için Google'ın proxy'si 1x1 şeffaf için 500 hatası veriyordu pixel.gif. Bunu 1x1 şeffaf olarak değiştirmek pixel.pngve proxy beklendiği gibi hizmet verdi. Tuhaf.
2014

8

Ben de benzer bir sorun yaşıyordum, ancak URL'nin uzunluğundan kaynaklanıyordu. Google, gmail'den bir resmi önbelleğe alırken aşağıdaki URL'yi oluşturur:

https://ci4.googleusercontent.com/proxy/[hash]#[url])

Oluşturulan hash, resmin URL'sine dayanır, ancak boyut, kullanılan karakterlere göre değişecektir. Farklı boyutlu URL'lerle birkaç test yaptım ve önbelleğe alınan görüntünün, karma uzunluğu 2076 karakteri aşarsa (2048 bayta yakın + meta? Emin değilim) , önbelleğe alınan görüntünün tutarlı bir şekilde yüklenemeyeceğini (400 / Geçersiz İstek) buldum .

Yine, görüntü URL'si yaklaşık 1000 özel karakterde veya 1500+ basit karakterde bu kadar çok karakteri aşan bir karma oluşturabilir. Karma uzunluğu 2076 karakteri aşarsa istek başarısız olur.

Bunun eski bir gönderi olduğunu anlıyorum, ancak umarım bu diğer geliştiricilerin Google'ı taramasına yardımcı olur


6

Bunun eski bir soru olduğunu biliyorum ama aynı şey bana da oldu. Erişim günlüklerimi kontrol ettiğimde bulduğum şey bu -

www.example.ca 66.249.85.50 - - [10/Apr/2014:17:57:18 -0400] "GET /newsletters/Apr10_2014/cad/cad2.jpg HTTP/1.1" 403 457 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 (via ggpht.com GoogleImageProxy)" 

Sen benim sunucu engellediğini fark görebilirsiniz GOOGLEIMAGEPROXY it a vererek 403 Forbidden cevap. Htaccess'imi kontrol etmeye karar verdim ve PROXY terimini engellediğimden eminim . Terimi kaldırdıktan sonra, resimler artık Gmail'de gayet iyi görünüyor. Umarım yardımcı olur.


Ayrıca bir 403'üm vardı. Mod_security'nin Google proxy'sini engellediğini anladım ...
Peter

2
Bu tam olarak sahip olduğum sorun buydu. Curl kullanarak aynı yapılandırma sorununu curl -I --user-agent "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 (via ggpht.com GoogleImageProxy)" -X GET https://example.com/your-image.png
yaşayıp yaşamadığınızı

3

HTTPS görüntü konumları önbelleğe alır. Üretim ortamlarımızın birçoğunda, bir HTTPS uri kullanarak gmail proxy'si görüntü konumlarında herhangi bir sorun yoktur. SSL sertifikası bir şekilde geçersizse Gmail'in içeriğinizi yok saydığını görebiliyordum.


Güncelleme için teşekkürler. Bir süre önce olmasına rağmen, bu cevaba hiçbir zaman bir çözüm bulamadım
RonnyKnoxville

Mevcut görüntülerle ve https protokolleriyle html e-postaları oluşturmaya çalışırken edindiğim deneyime bağlı olarak, bunun sertifikaya bağlı olduğunu onaylıyorum. İçinde organizasyon olmadan şifreleyelim kullanıldığında, resim Gmail'de engellenir. Organizasyon dahil markalı bir sertifika kullanırken, görüntü iyi ortaya çıkıyor. Sanırım ya ücretsiz ve markalı sertifikalar ya da içinde belirtilen organizasyon.
Tritof

3

Resmi değiştirdikten sonra denedim (resim adını değiştirmeden)

  • E-postayı yeni tarayıcıda açın, yeni resmi gösterir

  • Chrome'da (varsayılan tarayıcım) Ctrl + f5 (önbellek yenilemeye zorlar), ayrıca yeni görüntüyü gösterir


1

Sunucunuz tarafından görüntü dosyası için döndürülen içerik türünün doğru olup olmadığını kontrol edin.

Bunu Fiddler kullanarak kontrol edebilirsiniz.


1

Benim durumumda sorun dosya boyutuydu, 22 Mb idi (doğru biliyor muyum?) Ve boyutu küçülttükten sonra her şey bir cazibe gibi çalışmaya başladı.

Dosya boyutunu kontrol edin ve çok büyükse sıkıştırın.


İyi yakaladın. Gmail'in hata mesajı, çok yanıltıcı olan bir yazım hatası veya izin hatası gibi görünmesini sağlıyor.
Armatür

1

Bunun eski bir soru olduğunu biliyorum ama bu sorunla karşılaştım. Benim durumumda görüntüler Google Cloud Storage'da saklanıyor. İlginç olan şu bağlantı

https://storage.cloud.google.com/{bla_bla}/logo.png

307 (geçici yönlendirme) ve Locationbenzeri bir şey içeren başlık döndürür

https://{xxx}-apidata.googleusercontent.com/{bla-bla_bla}/logo.png?{zzz}

Görünüşe göre GoogleImageProxy, 307'yi doğru şekilde işlemiyor


Bu doğru, arka ucumla bir paket olarak bir yük dengeleyici ve CDN kurmam gerekiyordu, şimdi görüntülerim bulut depolamada düzgün çalışıyor
Wendel Nascimento

0

PHPMailer kullanıyorsanız benim için işe yarayan bu sorunun mükemmel bir çözümüne sahibim, o zaman PHPMailer'a böyle bir resim eklemek için başka bir seçenek eklemeniz yeterli

$mail = new PHPMailer(); $mail->AddEmbeddedImage('../absolutepath/image/image.jpg', 'logoimg', '../absolutepath/image/image.jpg');

Burada mutlak bir görüntü yolu verdik ve ona 'logoimg' veya ne isterseniz diye bir isim verdik.

Artık bu logoimg'yi HTML Gövdenizin neresine bu şekilde ekleyebilirsiniz

$mail->Body = " <h1>Test of PHPMailer html body with image</h1> <p>This is a test picture: <img src=\"cid:logoimg\" /></p>"; $mail->send();

Bu kadar.



0

Gif gönderirken bu sorunu yaşadım. Dosya boyutunun Google Proxy sunucusu için önemli olduğunu buldum. Dosyaları olabildiğince küçültmenizi ve işe yarayıp yaramadığını görmenizi öneririm. Gmail hesabınızı kullanabilir ve test etmek için bir URL'den fotoğraf ekleyebilirsiniz. E-postanızı oluştururken gif görünürse, alınabilir olacaktır.

mutlu kodlama.


0
  1. Outook / hotmail'den çalışıyor mu? O zaman bunu google sorunu olarak ayırabiliriz. Senin durumunda değil.
  2. Görüntünün boyutu sorun olabilir. Azaltmaya çalış ve gör
  3. www.mysite.com bu siteye sisteminizden erişilebilir. Ancak google sunucusundan da erişilebilir mi?
  4. Uzantıyı değiştirmeyi deneyin .. İşin püf noktası budur: Birkaç şeyi denemiş olabilirsiniz, ancak yine de önbellekten (çabalarınızı geçersiz kılar) getirebilirdi, ancak uzantı değiştiğinde, tekrar alır ve daha önce yaptığınız tüm işler devreye girer ve eğer işe yarıyor, hile yapan 'uzantı' olduğunu düşünebilirsiniz !! (uzantılardan bahsedenlerin çoğu gibi)

0

Bu sorunla karşılaşmam durumunda, sorun, yanlışlıkla e-posta şablonundaki resmin yolunun URL'de üçlü eğik çizgiye sahip olmasıydı https:///content.example.org/image.png. Bunu tespit etmek zordu ve URL'yi başarılı bir şekilde çözebilen diğer e-posta istemcilerinde çalışırken, Google'ın görüntü proxy'si bunu işleyemedi ve proxy görüntü adresi için bir 404 ile sonuçlandı.


-1

Gmail'in resminizi talep ettiğinden emin olun http, değilhttps .

Normal görsel url'niz şöyle diyelim:

https://www.mysite.com/images/pic1.jpg

Öyleyse şu şekilde değiştirin:

http://www.mysite.com/images/pic1.jpg

Google'ın proxy'sinin önbelleğe almadığına dair güçlü bir his var https.


İyi bir nokta, site kesinlikle https kullanıyor, dolayısıyla sebep bu olabilir
RonnyKnoxville

19
"Google proxy'sinin https'yi önbelleğe almadığına dair güçlü bir his var." - senin duygu yanlış
Will

1
Bu işe yaradı! Protokol çalışırken http kullanarak harici bir resim içeren bir Google elektronik tablo hücresini kopyalayıp bir e-postaya yapıştırmaya çalışıyordum.
Grafik

Bu yanlış, google neden resmi https üzerinden önbelleğe alamasın?
southpaw93

Google, https aleyhine açılan bir davadan bahsetmedi, bu nedenle güçlü duygu boşa gitti
Blue Clouds

-7

6 Mart ve muhtemelen bunu zaten anlamışsınızdır, ancak başkalarına yardım etmek için araya gireceğimi düşündünüz. JPG’lerin Gmail’de çalışmadığını keşfettim. PNG biçimi harika çalışıyor. Üzgünüm nedenini açıklayamam ama bazen nedenini sormamak daha iyidir. PNG kullanın!


Google'ın bunu bir çözüm olarak gördüğüne inanamıyorum. Yine de deneyeceğim çünkü Gmail kullanıcılarımız için haber bültenlerimiz mahvoldu.
Nathan Beach

Bu gmail destek JPEG yapar doğru değildir
Will


PNG kullanıyorum ve aynı sorunu yaşıyorum.
Eduardo Nobre
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.