it-swarm-tr.com

Gmail’in yeni resim önbelleğe alınması bültendeki resim bağlantılarını kırıyor

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

Son zamanlara kadar iyi çalıştı. Şimdi Google’ın yeni sistemi görüntüleri yeniden yazıyor ve önbelleğinde saklıyor (sözde)

Bununla birlikte, Google’ın resim linklerimi yeniden yazması onları tamamen kırıyor, 500 hata ve kopuk bir link görüntüsü veriyor.

Diyelim ki normal resim URL’m:

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

Google bunu şu şekilde 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.

Email showing image errors

Bu nedenle, Google tarafından oluşturulan bağlantılarda yanlış bir şey var ya da resimler googleusercontent sunucusuna yüklenmiyor, ancak sorunun nasıl çözüleceği hakkında hiçbir fikrim yok.

PHP, phpmailer kütüphanesi ve Amazon EC2'deki bir Ubuntu sunucusunu kullanıyorum, ancak bunun konuyla ilgili olduğundan emin değilim.

68
JackalopeZero

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

Bu, CACHING konseptiyle ilgili bir şey. Diyelim ki yakın zamanda php kodunuzu sunucunuza yerleştirdiniz ancak resim yüklemeyi unuttunuz. bir kez e-posta mantığınızla test ettiniz. sisteminiz bir HTML e-postası oluşturdu. Bu e-posta, gmail sunucusuna ulaştığında GoogleImageProxy, sitenizdeki görüntüleri kendi proxy sunucusuna almaya ve kaydetmeye çalışacaktır. görüntüleri alırken, GoogleImageProxy, eksik resimlerinize ve bazı korunan resimlere karşı 403 statü buldu. GoogleImagesProxy bu durumları kendi proxy sunucusunda sakladı.

Şimdi e-postanızı açmaya çalıştım, resimlerinize karşı 404 durum olduğunu fark ettiniz. Bu anlaşılabilir bir şey. Hemen bazı resimleri yüklemeyi unuttuğunuzu fark ettiniz, bu yüzden onları sunucunuza yüklediniz. ve ayrıca korunan görüntülere karşı bazı izinleri düzelttiniz.

Şimdi hepiniz işiniz bitti. Şimdi php-email scriptinizi bir kez daha çalıştırmayı deneyin. Sonuç olarak, Gmail veya Hotmail gelen kutunuzda başka bir e-posta alırsınız. Resimlerinizle ilgili tüm sorunları çözdünüz. Artık resimlerin e-posta içeriğinizde gösterilmesi gerekiyor. ancak görüntüleri hala göremiyorsunuz.

Ah, muhtemelen tarayıcınızın önbelleğini temizlemeyi unutmuşsunuzdur. 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/düzeltme eki uygulamayı deneyin ve php-e-posta komut dosyanızı binlerce kez çalıştırmayı deneyin. Ancak sonuç yine aynı olacak. İyileşme yok.

GERÇEK SORUN

Neler oluyor? Sana açıklayayım. Erişim günlüğüne gidin ve GoogleImageProxy'den istekleri bulmaya çalışın. E-postanızda kullanılan farklı resim sayısına bağlı olarak GoogleImageProxy’den yalnızca 2 veya 3 üç istek geldiğini görünce şaşıracaksınız. GoogleImageProxy hiçbir zaman resim almaya çalışmadı. Resimlerinizle ilgili sorunları, eksik resimler yükleyerek ve korunan resimler için izinleri ayarlayarak düzelttikten sonra bile. Neden? Tarayıcınızın önbelleğini temizlemenin etkisi yoktur. GoogleImageProxy, yeni e-postanız için bile taze resimleri asla almayacak çünkü görüntüler artık son durum kodlarıyla birlikte GoogleImageProxy’de önbelleğe alınmış ve kendi tarayıcınızda önbelleğe alınmamış.

GoogleImageProxy, resimler için kendi son kullanma tarihini belirledi. Bence bir ay. bu yüzden şimdi görüntülerin yeni kopyası son kullanma tarihinden sonra alınacaktır. Bir ay sonra demek istiyorum. GoogleImageProxy’i görüntüleri almaya zorlayamazsınız. Ancak e-postanızdaki resimleri görüntülemeniz önemlidir. Çözüm ne olabilir?

ÇÖZÜM

GoogleImageProxy’i resimlerinizi almaya zorlamanın tek yolu aşağıdadır

  • Resimlerinizi yalnızca png, jpg veya gif uzantıları olan başka bir şeyle yeniden adlandırın.
  • Resim URL'nizde ?t=34343 gibi bir sorgu dizesi kullanmayın
  • resminiz bir uzantı olarak png, jpg veya gif içermelidir.
  • resim URL’niz doğrudan resminize eşlenmelidir.
  • Korunan resimleriniz için bazı proxy URL’leri kullanmanız gerekiyorsa, cevabınız Content-Type: image/jpeg gibi uygun başlıklar içermelidir.
  • 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 bir php-email script betiği için tüm işlemi tekrarlamaya çalışın. çünkü GoogleImageProxy her zaman resimlerinizi önbelleğe alır ve her yeni denemede aynı işlemi tekrarlamanız gerekir.

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

68

Örneğinize göre, geleneksel uzantıları kullanıyorsunuz (.jpg, .png, .gif). Bu konudaki bazı insanlar , karşılaştığınız aynı sorunları açıklayan, bu uzantıları kullanmanın sorunu çözdüğünü belirtmiştir.

Diğer olası çözümler:

26
JSuar

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 karma görüntünün URL'sine dayanır, ancak boyut kullanılan karakterlere göre değişir. Farklı boyutta URL'lere sahip birkaç test yaptım ve hash 2076 karakter uzunluğunu aşarsa (2048 bayt + metaya emin değilsem), önbelleğe alınmış görüntünün tutarlı bir şekilde yüklenemediğini (400/Geçersiz İstek) buldum.

Yine, resim URL'si, ~ 1000 özel karakterde veya 1500+ basit karakterde bu kadar fazla karakteri geçen bir karma üretebilir. Karma uzunluğu 2076 karakterden uzunsa, istek başarısız olur.

Bunun eski bir gönderi olduğunun farkındayım, ancak umarım bu diğer kişilerin Google’ı taramasına yardımcı olur

6
Mahdi.Montgomery

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

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)" 

Sunucumun GOOGLEIMAGEPROXY adlı kullanıcıya 403 Yasaklı bir cevap verdiğini engellediğini görebilirsiniz. .Htaccess adresimi kontrol etmeye karar verdim ve yeterince PROXY terimini engelliyordum. Terimi kaldırdıktan sonra, görüntüler şimdi Gmail’de gayet iyi görünüyor. Umarım yardımcı olur.

5
Manish Pradhan

Ben sadece denedim, Görüntüyü değiştirdikten sonra (görüntü adını değiştirmeden)

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

  • Ctrl + f5 (önbellek yenilemeye zorlar) kromdaki (varsayılan tarayıcım), Ayrıca yeni resim gösteriyor

3
safin chacko

HTTPS resim konumları önbellek yapar. Üretim ortamlarımızın birçoğunun HTTPS uri kullanarak gmail proxy görüntü konumlarında herhangi bir problemi yoktur. SSL sertifikası bir şekilde geçersizse, gmail’in içeriğinizi görmezden geldiğini görebiliyordum.

2
DDS

Benim durumumda dosya boyutu sorundu, 22 Mb (doğru biliyorum?) Ve boyutu küçültdükten sonra her şey bir cazibe gibi çalışmaya başladı.

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

1
vishes_shell

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
Softlion

Gmail’in, resminizi http yerine https üzerinden talep ettiğinden emin olun.

Diyelim ki normal resminizin URL'si:

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

Öyleyse şuna değiştir:

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

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

0
Pedro Vagner
0
Naved Khan

Gif gönderirken bu sorun vardı. Dosya boyutunun Googles Proxy sunucusu için önemli olduğunu buldum. Dosyaları olabildiğince küçük tutmanızı öneririm ve işe yarayıp yaramadığına bakın. Test etmek için Gmail hesabınızı kullanabilir ve bir URL’den bir fotoğraf ekleyebilirsiniz. Eğer e-postanızı oluştururken gif belirirse, o zaman alacaksınız.

mutlu kodlama.

0
AtLeastTheresToast

PHPMailer kullanıyorsanız, benim için işe yarayan bu sorunun mükemmel bir çözümüne sahibim, o zaman PHPMailer'de böyle bir görüntü eklemek için başka bir seçenek eklemelisiniz

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

Burada mutlak görüntü yolunu verdik ve ona 'logoimg' ismini ya da ne istersen onu ver.

Şimdi bu logoyu HTML Gövdesinde istediğiniz yere 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
Arjun Choudhary