it-swarm.asia

يؤدي التخزين المؤقت الجديد لصور Gmail إلى قطع روابط الصور في الرسائل الإخبارية

لقد تلقيت بعض رسائل البريد الإلكتروني التلقائية التي يتم إرسالها عند اكتمال الاشتراك لموقعي.

حتى وقت قريب ، كانوا يعملون بشكل جيد. الآن يقوم نظام 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.

Email showing image errors

لذلك ، إما أن هناك خطأ ما في الروابط التي يتم إنشاؤها بواسطة Google أو أن الصور لا يتم تحميلها على خادم googleusercontent ، لكن ليس لدي فكرة عن كيفية حل المشكلة.

أنا باستخدام PHP و مكتبة phpmailer وخادم Ubuntu على Amazon EC2 ، لكنني لست متأكدًا من أن الأمر مرتبط بالمشكلة.

74
JackalopeZero

أعتقد أنني اكتشفت مشكلة GoogleImageProxy.

هذا شيء متعلق بمفهوم التخزين المؤقت. لنفترض أنك قمت مؤخرًا بنشر شفرة php الخاصة بك على خادمك ولكنك نسيت تحميل الصور. اختبرت مرة واحدة مع منطق البريد الإلكتروني الخاص بك. نظامك ولدت بريد HTML الإلكتروني. عندما تصل رسالة البريد الإلكتروني هذه إلى خادم gmail ، سيحاول GoogleImageProxy جلب الصور وتخزينها من موقعك إلى خادم الوكيل الخاص به. أثناء جلب الصور ، عثر GoogleImageProxy على حوالي 404 حالة ضد الصور المفقودة و 403 ضد بعض الصور المحمية. قام GoogleImagesProxy بتخزين هذه الحالات في خادم وكيل خاص به.

الآن حاول فتح بريدك الإلكتروني ، لاحظت وجود 404 حالة مقابل صورك. هذا شيء مفهوم. لقد أدركت على الفور أنك نسيت تحميل بعض الصور ، لذا قمت بتحميلها على الخادم الخاص بك. وأيضا قمت بإصلاح بعض الأذونات ضد الصور المحمية.

لقد انتهيت جميعًا الآن. الآن تحاول تشغيل البرنامج النصي php-email مرة أخرى. نتيجة لذلك ، تتلقى بريدًا إلكترونيًا آخر في بريدك الوارد في Gmail أو Hotmail. كنت قد حللت جميع القضايا مع الصور الخاصة بك. الآن يجب أن يتم عرض الصور في محتوى البريد الإلكتروني الخاص بك. لكنك ما زلت غير قادر على رؤية الصور.

آه ، ربما نسيت مسح ذاكرة التخزين المؤقت للمتصفح لديك. امسح ذاكرة التخزين المؤقت للمتصفح وقم بتحميل صفحة gmail أو hotmail مرة أخرى. لكن النتيجة ستكون كما هي. حاول تطبيق العشرات من الإصلاحات/التصحيحات وحاول تشغيل نص php-email الخاص بك لآلاف المرات. لكن النتيجة ستكون كما هي. لا تحسن.

المشكلة الحقيقية

ما يجري بحق الجحيم؟ اسمحوا لي أن أشرح لك. انتقل إلى سجل الوصول وحاول العثور على طلبات من GoogleImageProxy. ستندهش عندما ترى أنه لن يكون هناك سوى ثلاثة أو ثلاثة طلبات من GoogleImageProxy اعتمادًا على عدد الصور المختلفة المستخدمة في بريدك الإلكتروني. لم يحاول GoogleImageProxy جلب الصور حتى بعد إصلاح المشكلات المتعلقة بصورك عن طريق تحميل الصور المفقودة وتعيين أذونات للصور المحمية. لماذا ا؟ لا يؤثر مسح ذاكرة التخزين المؤقت للمتصفح لديك. لن يقوم GoogleImageProxy أبدًا بإحضار الصور الجديدة حتى للبريد الإلكتروني الجديد الخاص بك لأن الصور يتم تخزينها الآن في GoogleImageProxy جنبًا إلى جنب مع رمز الحالة الأخير وعدم تخزينها في المتصفح الخاص بك.

قام GoogleImageProxy بتعيين تاريخ انتهاء الصلاحية الخاص به للصور. أعتقد شهر واحد. حتى الآن سيتم جلب نسخة جديدة من الصور بعد تاريخ انتهاء الصلاحية. يعني بعد شهر واحد. لا يمكنك إجبار GoogleImageProxy على جلب الصور. لكن من المهم بالنسبة لك عرض الصور في بريدك الإلكتروني. ماذا يمكن أن يكون الحل؟

الحل

فيما يلي الطريقة الوحيدة لإجبار GoogleImageProxy على جلب صورك

  • أعد تسمية صورك إلى شيء آخر باستخدام امتدادات png أو jpg أو gif فقط.
  • لا تستخدم أي نوع من سلسلة الاستعلام في عنوان URL لصورتك مثل ?t=34343
  • يجب أن تتضمن صورتك png أو jpg أو gif كملحق.
  • يجب تعيين عنوان URL لصورتك على صورتك مباشرةً.
  • إذا كنت بحاجة إلى استخدام عنوان url الوكيل لصورك المحمية ، فيجب أن تتضمن إجابتك العنوان الصحيح مثل Content-Type: image/jpeg
  • يجب أن يتطابق امتداد الملف ورأس نوع المحتوى
  • يجب أن يكون رمز الحالة 200 بدلاً من 403 ، 500 إلخ

ملاحظة مهمة

حاول أن تكرر العملية برمتها لكل مجموعة من برامج php-email. لأنه في كل مرة يقوم GoogleImageProxy بتخزين صورك مؤقتًا ، سيتعين عليك تكرار نفس العملية لكل محاولة جديدة.

نأمل أن يؤدي هذا إلى حل المشكلة لمعظم الأشخاص.

61
Malik Ahmed Khan Awan

بناءً على مثالك ، يبدو أنك تستخدم إضافات تقليدية (.jpg ، .png ، .gif). ذكر بعض الأشخاص في هذا الموضوع ، بوصف نفس المشكلات التي تواجهها ، أن استخدام هذه الملحقات يحل المشكلة.

الحلول الممكنة الأخرى:

25
JSuar

كنت أواجه مشكلة مماثلة ، ولكن سبب ذلك هو طول عنوان URL. تنشئ Google عنوان URL التالي عند التخزين المؤقت لصورة من gmail:

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

تعتمد التجزئة الناتجة على عنوان URL الخاص بالصورة ، ولكن الحجم سوف يختلف بناءً على الأحرف المستخدمة. قمت بإجراء العديد من الاختبارات باستخدام عناوين URL مختلفة الحجم ، ووجدت أن الصورة المخزنة مؤقتًا ستفشل في التحميل بشكل متناسق (400/طلب غير صالح) إذا كان طول التجزئة يتجاوز 2076 حرفًا (قريب من 2048 بايت + ميتا - غير متأكد).

مرة أخرى ، يمكن أن ينشئ عنوان URL للصورة علامة تجزئة تتجاوز هذا العدد الكبير من الأحرف عند حوالي 1000 حرف أو 1500 حرفًا بسيطًا. إذا تجاوز حجم التجزئة 2076 حرفًا ، يفشل الطلب.

أدركت أن هذه مشاركة قديمة ، لكن نأمل أن يساعد ذلك المطورين الآخرين في البحث عن Google

7
Mahdi.Montgomery

أعلم أن هذا سؤال قديم ولكن نفس الشيء حدث لي. عندما راجعت سجلات الوصول الخاصة بي ، هذا ما وجدته -

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. بعد إزالة المصطلح ، تظهر الصور على ما يرام الآن على Gmail. امل ان يساعد.

5
Manish Pradhan

مواقع صور HTTPS تفعل ذاكرة التخزين المؤقت. لا تواجه العديد من بيئات الإنتاج الخاصة بنا أي مشاكل مع مواقع صور بروكسي gmail باستخدام urt HTTPS. يمكن أن أرى gmail يتجاهل المحتوى الخاص بك إذا كانت شهادة طبقة المقابس الآمنة غير صالحة إلى حد ما.

3
DDS

لقد حاولت فقط ، بعد استبدال الصورة (دون تغيير اسم الصورة)

  • فتح البريد الإلكتروني في متصفح جديد ، فإنه يظهر صورة جديدة

  • Ctrl + f5 (يفرض تحديث ذاكرة التخزين المؤقت) في chrome (المتصفح الافتراضي الخاص بي) ، ويظهر أيضًا صورة جديدة

3
safin chacko

في حالتي ، كان حجم الملف هو المشكلة ، فقد كان 22 ميغابايت (أعرف حقًا؟) ، وبعد أن خفضنا الحجم بدأ كل شيء يعمل مثل السحر.

تحقق من حجم الملف وإذا كان حجمه كبيرًا ، فقم بضغطه.

1
vishes_shell

تحقق من صحة نوع المحتوى الذي تم إرجاعه لملف الصورة بواسطة الخادم الخاص بك.

يمكنك التحقق من ذلك باستخدام Fiddler.

1
Softlion

تأكد من أن Gmail يطلب صورتك على http ، وليس https.

لنفترض أن عنوان url لصورتك العادية هو:

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

لذا قم بالتغيير إلى:

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

لدي شعور قوي بأن وكيل Google لا يقوم بتخزين https.

0
Pedro Vagner

لدي حل مثالي لهذه المشكلة ، والتي عملت لي إذا كنت تستخدم 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
Arjun Choudhary