जीमेल की नई छवि कैशिंग समाचार पत्र में छवि लिंक तोड़ रही है


105

मुझे कुछ स्वचालित ईमेल मिले हैं जो मेरी साइट के लिए साइनअप पूर्ण होने पर भेजे गए हैं।

कुछ समय पहले तक वे ठीक काम करते थे। अब Google की नई प्रणाली छवियों को फिर से लिख रही है और उन्हें कैश में संग्रहीत कर रही है (माना जाता है)

हालाँकि, Google की मेरी छवि लिंक की नई पुनर्लेखन पूरी तरह से उन्हें तोड़ रही है, 500 त्रुटि और टूटी लिंक छवि दे रही है।

कहते हैं कि मेरी सामान्य छवि url है:

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

Google इसे फिर से लिख रहा है:

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

हालाँकि, उस URL पर कुछ भी नहीं है।

छवि दिखाने में ईमेल

इसलिए, या तो Google द्वारा बनाए जा रहे लिंक के साथ कुछ गड़बड़ है या चित्र सिर्फ googleusercontent सर्वर पर अपलोड नहीं किए जा रहे हैं, लेकिन मुझे नहीं पता कि समस्या को कैसे हल किया जाए।

Im PHP, phpmailer लाइब्रेरी और Amazon EC2 पर एक Ubuntu सर्वर का उपयोग कर रहा है , लेकिन मुझे यकीन नहीं है कि इस मुद्दे से संबंधित है।


क्या आपके पास अपने सर्वर या लॉजिक में कोई सुरक्षा सुविधा है जो छवि की सेवा कर रही है? क्या यह केवल एक सीमित समय या इस तरह की सुविधाओं के लिए उपलब्ध है?
पिक्सू

छवियों को देखने के लिए किसी प्रकार की सुरक्षा सुविधा या लॉगिन प्रणाली नहीं है, वे सिस्टम में एक सार्वजनिक फ़ोल्डर में हैं। यदि आप मूल लिंक पर जाते हैं तो चित्र देखने योग्य हैं। मुद्दा यह है कि Google का url का पुनर्लेखन या तो छवि को उनके सर्वर पर अपलोड नहीं कर रहा है या उपयोगकर्ता को मेरी साइट पर सही तरीके से निर्देशित नहीं कर रहा है।
रोनीकनेक्सविले

1
ब्लॉग और पोस्ट की समीक्षा के बाद, इस यादृच्छिक मुद्दे (मार्च 2013) के लिए कोई वास्तविक समाधान नहीं मिला है। मैं गलत हूँ ?
खेरौद

4
यह मुझे बिल्कुल पागल बना रहा है। Google ने ईमेल तोड़ दिया है। मैं Google फ़ोरम पर कई संबंधित थ्रेड्स में सक्रिय रहा हूँ और कोई कर्षण प्राप्त नहीं कर सकता। यह दिसंबर 2013 की शुरुआत से टूट गया है।
नाथन बीच

यह कहीं गया है? मैं अपने बाल खींच रहा हूं। छवियां सार्वजनिक रूप से सुलभ हैं, सीधे उनके पास जाते समय लोड होता है, सामग्री प्रकार के मिलान और Google के प्रॉक्सी सर्वर को मेरे लॉग में 200 ओके के अलावा कुछ नहीं मिल रहा है। मुझे पता नहीं है कि छवियां जीमेल में क्यों नहीं दिखाई देंगी।
मैट ब्रूनमियर

जवाबों:


83

मुझे लगता है कि मुझे GoogleImageProxy समस्या का पता चल गया है।

यह CACHING अवधारणा से संबंधित कुछ है। मान लीजिए, आपने हाल ही में अपने सर्वर पर अपना php कोड तैनात किया है लेकिन आप चित्र अपलोड करना भूल गए हैं। आपने अपने ईमेल तर्क के साथ एक बार परीक्षण किया। आपके सिस्टम ने एक HTML ईमेल तैयार किया। जब यह ईमेल gmail सर्वर से टकराएगा तो GoogleImageProxy आपकी साइट से छवियों को अपने प्रॉक्सी सर्वर पर लाने और संग्रहीत करने का प्रयास करेगा। छवियों को प्राप्त करते समय, GoogleImageProxy ने आपकी लापता छवियों के विरुद्ध 404 स्थितियाँ और कुछ संरक्षित छवियों के विरुद्ध 403 पाया। GoogleImagesProxy ने अपने स्वयं के प्रॉक्सी सर्वर में इन स्थितियों को संग्रहीत किया है।

अब अपना ईमेल खोलने की कोशिश की, आपने अपनी छवियों के खिलाफ कुछ 404 स्थितियों पर ध्यान दिया। यह कुछ समझ में आता है। आपको तुरंत महसूस हुआ कि आप कुछ चित्र अपलोड करना भूल गए हैं, इसलिए आपने उन्हें अपने सर्वर पर अपलोड कर दिया है। और भी आप संरक्षित छवियों के खिलाफ कुछ अनुमति तय की है।

आप सब अब कर रहे हैं अब आप अपनी php-email स्क्रिप्ट को एक बार फिर से चलाने का प्रयास करें। परिणामस्वरूप आप अपने जीमेल या हॉटमेल इनबॉक्स में एक और ईमेल प्राप्त करते हैं। आपने अपनी छवियों के साथ सभी मुद्दों को निर्धारित किया था। अब छवियों को आपके ईमेल सामग्री में प्रदर्शित किया जाना चाहिए। लेकिन आप अभी भी छवियों को देखने में असमर्थ हैं।

आह, संभवतः आप अपने ब्राउज़र का कैश साफ़ करना भूल गए हैं। अपने ब्राउज़र का कैश साफ़ करें और gmail या हॉटमेल पेज को एक बार फिर लोड करें। लेकिन परिणाम अभी भी वही होगा। दर्जनों फिक्स / पैच लगाने की कोशिश करें और अपनी php-email स्क्रिप्ट को हजारों बार चलाने का प्रयास करें। लेकिन परिणाम अभी भी वही होगा। कोई सुधार नहीं।

वास्तविक समस्या

क्या तमाशा चल रहा है? इसे मैं तुम्हें समझाता हूं। अपने प्रवेश लॉग पर जाएं और GoogleImageProxy से अनुरोध खोजने का प्रयास करें। आपको यह देखकर आश्चर्य होगा कि GoogleImageProxy से आपके ईमेल में उपयोग की जाने वाली विभिन्न छवियों की संख्या के आधार पर केवल 2 या 3 तीन अनुरोध होंगे। GoogleImageProxy ने कभी भी छवियों को लाने की कोशिश नहीं की, भले ही आपने लापता छवियों को अपलोड करके और संरक्षित छवियों के लिए अनुमतियाँ सेट करके अपनी छवियों के साथ समस्याओं को ठीक किया हो। क्यों? आपके ब्राउज़र के कैश को साफ़ करने से कोई प्रभाव नहीं पड़ता है। GoogleImageProxy आपके नए ईमेल के लिए भी कभी भी नई छवियों को नहीं लाएगा क्योंकि चित्र अब GoogleImageProxy में उनके अंतिम स्थिति कोड के साथ कैश किए गए हैं और आपके स्वयं के ब्राउज़र में कैश नहीं किए गए हैं।

GoogleImageProxy ने छवियों के लिए अपनी स्वयं की समाप्ति तिथि निर्धारित की है। मुझे लगता है कि एक महीना। इसलिए अब एक्सपायरी डेट के बाद छवियों की नई प्रति प्राप्त की जाएगी। मेरा मतलब एक महीने के बाद। आप GoogleImageProxy को छवियों को लाने के लिए बाध्य नहीं कर सकते। लेकिन आपके लिए यह महत्वपूर्ण है कि आप अपने ईमेल में चित्र प्रदर्शित करें। इसका क्या हल हो सकता है?

समाधान

GoogleImageProxy को आपकी छवियों को लाने के लिए बाध्य करने का एकमात्र तरीका निम्नलिखित है

  • केवल png, jpg या gif एक्सटेंशन के साथ अपनी छवियों को किसी और चीज़ में बदलें।
  • अपनी छवि url जैसे किसी भी प्रकार के क्वेरी स्ट्रिंग का उपयोग न करें ?t=34343
  • आपकी छवि में एक्सटेंशन के रूप में png, jpg या gif शामिल होना चाहिए।
  • आपकी छवि url को आपकी छवि पर सीधे मैप किया जाना चाहिए।
  • यदि आपको अपनी संरक्षित छवियों के लिए कुछ प्रॉक्सी यूआरएल का उपयोग करने की आवश्यकता है, तो आपकी प्रतिक्रिया में उचित हेडर शामिल होना चाहिए Content-Type: image/jpeg
  • फ़ाइल एक्सटेंशन और सामग्री-प्रकार हेडर का मिलान होना चाहिए
  • स्टेटस-कोड 403, 500 आदि के बजाय 200 होना चाहिए

महत्वपूर्ण लेख

Php-email स्क्रिप्ट के हर रन के लिए पूरी प्रक्रिया दोहराने की कोशिश करें। क्योंकि हर बार GoogleImageProxy आपकी छवियों को कैश कर देगा और आपको हर नई कोशिश के लिए उसी प्रक्रिया को दोहराना होगा।

उम्मीद है कि यह अधिकांश लोगों के लिए इस मुद्दे को ठीक कर देगा।


9
tl; dr: आपका शायद .svg, उपयोग .png .jpg या .gif के बजाय
taylorstine

2
हाँ, svg का उपयोग न करें;)
अलेक्जेंड्रे मार्टिनी

1
हमारे पास Azure Blob Storage से एक ऐसी छवि है जिसे फ़ाइल नाम में जगह मिली थी। छवि जीमेल में सही ढंग से नहीं दिखेगी। जब हमने फ़ाइल नाम में स्थान हटा दिया तो यह समस्या ठीक हो गई।
नरथिंग

1
@AlexandreMartini क्यों नहीं एसवीजी का उपयोग करें? एसवीजी में लोगो सबसे अच्छा है, नहीं?
21

1
सुनिश्चित करें कि आप अपनी छवि पथ urlencode। हमारे पास पथ में एक स्थान था, और हालांकि ब्राउज़र इसे% 20 के साथ बदल देगा, जीमेल कैश नहीं करता है और इसे एक टूटी हुई कड़ी मानता है।
चाड रिचर्डसन

29

आपके उदाहरण के आधार पर, ऐसा लगता है कि आप पारंपरिक एक्सटेंशन (.jpg, .png, .gif) का उपयोग कर रहे हैं। इस थ्रेड पर कुछ लोग , उन्हीं मुद्दों का वर्णन करते हुए, जिनका आपने वर्णन किया है कि उन एक्सटेंशन का उपयोग करने से समस्या हल हो जाती है।

अन्य संभावित समाधान:


1
ये बहुत सारे स्रोत हैं जिन्हें मैंने स्वयं इस समस्या पर शोध करते समय पाया था, दुर्भाग्य से उनमें से कोई भी मुझे जवाब नहीं दे रहा है जिसकी मुझे तलाश है। Im अभी भी उम्मीद कर रहा है कि Google इस मुद्दे को हल करने से पहले मैं एक जवाब खोजने के लिए प्रबंधित करेगा
RonnyKnoxville

@JackalopeZero क्या आपने न्यूज़लेटर के बाहर इस मुद्दे को स्वतंत्र रूप से दोहराने की कोशिश की है? मैंने इसे सफल परिणामों के साथ अपने व्यक्तिगत और कंपनी के जीमेल पर आजमाया। मुझे पता है कि यह एक समस्या है, लेकिन शायद छवियों के साथ एक नया ईमेल बनाने से क्या हो रहा है पर प्रकाश डाला जा सकता है।
जेएसयूआर

4
एक्सटेंशन पर टिप के लिए धन्यवाद। मैं .svgछवियों का उपयोग कर रहा था , और Google के प्रॉक्सी द्वारा समर्थित नहीं होने की पुष्टि की जाती है।
निक मेरिल

1
मैं आज खुद इस में भाग गया। मेरे लिए, Google का प्रॉक्सी 1x1 पारदर्शी के लिए 500 त्रुटि फेंक रहा था pixel.gif। इसे 1x1 पारदर्शी में बदलना pixel.pngऔर प्रॉक्सी की उम्मीद के मुताबिक काम किया। अजीब।
deefour

8

मुझे एक समान समस्या हो रही थी, लेकिन यह URL की लंबाई के कारण था। जब जीमेल से एक छवि को कैशिंग किया जाता है तो Google निम्न URL बनाता है:

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

हैश उत्पन्न छवि के URL पर आधारित है, लेकिन उपयोग किए गए वर्णों के आधार पर आकार भिन्न होगा। मैंने अलग-अलग आकार के URL के साथ कई परीक्षण चलाए, और पाया कि कैश्ड छवि लगातार लोड नहीं हो पाएगी (400 / अमान्य अनुरोध) यदि हैश लंबाई में 2076 वर्ण से अधिक है (2048 बाइट्स + मेटा के पास? निश्चित नहीं है)।

फिर से, छवि URL एक हैश उत्पन्न कर सकता है जो ~ 1000 विशेष वर्णों, या 1500+ सरल वर्णों पर इस कई वर्णों को पार करता है। यदि हैश लंबाई में 2076 अक्षर से अधिक है, तो अनुरोध विफल हो जाता है।

मुझे लगता है कि यह एक पुरानी पोस्ट है, लेकिन उम्मीद है कि इससे अन्य देवों को Google को डराने में मदद मिलेगी


6

मैं जानता हूं कि यह एक पुराना सवाल है लेकिन मेरे साथ भी यही हुआ है। जब मैंने अपनी पहुंच लॉग की जाँच की तो मुझे यही मिला -

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

आप देख सकते हैं कि मेरा सर्वर GOOGLEIMAGEPROXY को 403 निषिद्ध उत्तर देने से रोक रहा था । मैंने अपने .htaccess की जाँच करने का फैसला किया और यकीन है कि मैं PROXY शब्द को रोक रहा था । शब्द हटाने के बाद, छवियां अब जीमेल पर ठीक दिखाई देती हैं। उम्मीद है की वो मदद करदे।


मेरे पास एक 403 भी था। मुझे पता चला कि mod_security Google प्रॉक्सी को अवरुद्ध कर रहा है ...
पीटर

2
यह वास्तव में मेरे पास मुद्दा था। यदि आप कर्ल का उपयोग करके एक ही कॉन्फ़िगरेशन समस्या का परीक्षण कर रहे हैं: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
डेव टेइरे

3

HTTPS छवि स्थान कैश करते हैं। हमारे उत्पादन वातावरण में से कई में HTTPS uri का उपयोग करके छवि के स्थानों के साथ कोई समस्या नहीं है। अगर एसएसएल प्रमाणपत्र किसी तरह से अमान्य है तो मैं आपकी सामग्री को अनदेखा कर सकता हूं।


अद्यतन के लिए धन्यवाद। हालाँकि यह कुछ समय पहले था, लेकिन मुझे कभी इस जवाब का हल नहीं मिला
RonnyKnoxville

मेरे वर्तमान अनुभव के आधार पर HTML ईमेल बनाने की कोशिश की जा रही है जिसमें शामिल छवियों और https प्रोटोकॉल के साथ, मैं पुष्टि करता हूं कि यह प्रमाण पत्र पर निर्भर करता है। इसमें बिना किसी संगठन के साथ एन्क्रिप्ट का उपयोग करते हुए, छवि जीमेल में अवरुद्ध है। शामिल संगठन के साथ एक ब्रांडेड प्रमाण पत्र का उपयोग करते समय, अच्छी तरह से छवि दिखाई देती है। इसलिए मुझे लगता है कि यह या तो मुफ्त बनाम ब्रांडेड प्रमाण पत्र है या इसमें घोषित संगठन है।
ट्रिटॉफ

3

मैंने बस कोशिश की, छवि बदलने के बाद (छवि नाम बदले बिना)

  • नए ब्राउज़र में ईमेल खोलें, यह नई छवि दिखाता है

  • क्रोम (मेरा डिफ़ॉल्ट ब्राउज़र) में Ctrl + f5 (कैश रीफ़्रेश होने पर मजबूर करता है), नई छवि भी दिखाता है


1

जांचें कि आपके सर्वर द्वारा इमेज फाइल के लिए दिया गया कंटेंट-टाइप सही है।

आप इसे फ़िडलर का उपयोग करके देख सकते हैं।


1

मेरे मामले में फ़ाइल का आकार समस्या था, यह 22 एमबी था (मुझे सही पता है?), और हमने आकार कम करने के बाद सब कुछ एक आकर्षण की तरह काम करना शुरू कर दिया।

फ़ाइल का आकार जांचें और यदि यह बहुत बड़ा है, तो इसे संपीड़ित करें।


अच्छा पकड़ा। जीमेल का त्रुटि संदेश यह बताता है कि यह टाइपिंग त्रुटि या अनुमति त्रुटि थी, जो बहुत ही भ्रामक थी।
ल्यूमिनेयर

1

मुझे पता है कि यह एक पुराना सवाल है लेकिन मैं इस समस्या से मिला हूं। मेरे मामले में चित्र Google क्लाउड स्टोरेज में संग्रहीत हैं। क्या दिलचस्प है वह लिंक

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

रिटर्न 307 (अस्थायी पुनर्निर्देशित) और Locationहेडर जिसमें कुछ है

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

GoogleImageProxy की तरह लगता है 307 सही ढंग से संसाधित नहीं करता है


यह सच है, मुझे बाल्टी के रूप में अपने बैकएंड के साथ एक लोड बैलेंसर और सीडीएन स्थापित करने की आवश्यकता है, अब मेरी छवियां क्लाउड स्टोरेज पर सही ढंग से काम करती हैं
वेंडेल नैसिमेंटो

0

मेरे पास इस समस्या का एक सही समाधान है, जो मेरे लिए काम करता है अगर आप PHPMailer का उपयोग कर रहे हैं तो आपको बस इस तरह की छवि संलग्न करने के लिए PHPMailer में एक और विकल्प जोड़ना होगा

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

यहाँ हमने छवि का निरपेक्ष पथ दिया है और इसे एक नाम दिया है 'logoimg' या जिसे आप चाहते हैं।

अब आप इस लोगो को अपने HTML बॉडी में कहीं भी इस तरह से जोड़ सकते हैं

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

बस इतना ही।



0

जब मैं gifs भेज रहा था तो मेरे पास यह मुद्दा था। मैंने पाया कि फ़ाइल का आकार Googles प्रॉक्सी सर्वर के लिए मायने रखता है। मैं सुझाव देता हूं कि फाइलों को जितना संभव हो उतना छोटा करें और देखें कि क्या काम करता है। आप अपने जीमेल खाते का उपयोग कर सकते हैं और परीक्षण करने के लिए एक यूआरएल से एक तस्वीर जोड़ सकते हैं। यदि जीआईएफ दिखाता है कि जब आप अपना ईमेल लिख रहे हैं तो यह प्राप्य होगा।

खुश कोडिंग।


0
  1. क्या यह आउटूक / हॉटमेल से काम कर रहा है? तब हमें इसे Google इश्यू के रूप में अलग करना चाहिए। आपके मामले में ऐसा नहीं है।
  2. छवि का आकार एक समस्या हो सकती है। इसे कम करने और देखने की कोशिश करें
  3. www.mysite.com यह साइट आपके सिस्टम से सुलभ हो सकती है। लेकिन क्या यह Google सर्वर से भी सुलभ है?
  4. एक्सटेंशन बदलने की कोशिश करें .. यह ट्रिक है: आपने कई चीजों की कोशिश की होगी, लेकिन यह अभी भी कैश से प्राप्त होगी (जो आपके प्रयासों को अमान्य करता है) लेकिन जब एक्सटेंशन बदल जाता है, तो यह फिर से प्राप्त होता है और आपके द्वारा किए गए सभी काम खेलने में आता है और यदि यह काम करता है आप सोच सकते हैं कि यह 'विस्तार' है जिसने चाल चली !! (एक्सटेंशन के बारे में बोलने वालों में से कई)

0

इस मुद्दे पर चलने के मेरे मामले में, समस्या यह थी कि गलती से ईमेल टेम्पलेट में छवि का पथ URL में ट्रिपल स्लैश था, उदा https:///content.example.org/image.png। यह स्पॉट करना मुश्किल था, और जब यह अन्य ईमेल क्लाइंट में काम कर रहा था, जो URL को सफलतापूर्वक हल कर सकता था, तो Google की छवि प्रॉक्सी इसे संभालने में सक्षम नहीं थी और परिणामस्वरूप अनुमानित छवि पते के लिए 404 था।


-1

सुनिश्चित करें कि जीमेल आपकी छवि को खत्म करने का अनुरोध कर रहा है http, नहींhttps

कहते हैं कि आपकी सामान्य छवि url है:

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

इसलिए इसमें बदलाव करें:

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

मुझे लगता है कि गूगल के प्रॉक्सी कैश नहीं है एक मजबूत लग रहा है https


अच्छी बात है, साइट निश्चित रूप से https का उपयोग कर रही है ताकि इसका कारण हो सके
RonnyKnoxville

19
"मुझे इस बात का एहसास है कि Google का प्रॉक्सी https नहीं करता है।" - अपने लग रहा है गलत है
विल

1
यह काम किया! मैं एक Google स्प्रेडशीट सेल को कॉपी और पेस्ट करने की कोशिश कर रहा था जिसमें एक ईमेल में एक बाहरी छवि थी, http का उपयोग करके प्रोटोकॉल काम किया।
ग्राफ

यह गलत है, क्यों Google छवि को https पर कैश नहीं कर पाएगा?
साउथपॉवोका

Google ने https के खिलाफ एक मुकदमे के बारे में कुछ भी उल्लेख नहीं किया है, इसलिए मजबूत भावना व्यर्थ है
ब्लू क्लाउड

-7

यह 6 मार्च है और आप शायद पहले ही इसका पता लगा चुके हैं, लेकिन मुझे लगा कि मैं दूसरों की मदद करने के लिए झंकार करूंगा। मुझे पता चला कि जेपीजी जीमेल में काम नहीं करते हैं। पीएनजी प्रारूप महान काम करता है। क्षमा करें, मैं क्यों नहीं समझा सकता, लेकिन कभी-कभी यह बेहतर है कि क्यों न पूछा जाए। PNG का उपयोग करें!


मैं विश्वास नहीं कर सकता कि Google वास्तव में एक समाधान पर विचार करेगा। भले ही मैं यह कोशिश करने जा रहा हूं क्योंकि हमारे समाचार पत्र हमारे जीमेल उपयोगकर्ताओं के लिए बर्बाद हो गए हैं।
नाथन बीच

यह सच नहीं है, जीमेल समर्थन jpegs करता है
विल

यह
manager

एल png का उपयोग करें और एक ही समस्या प्राप्त करें।
एडुआर्डो नोब्रे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.