Ich habe einige automatische E-Mails, die nach Abschluss der Anmeldung für meine Website gesendet werden.
Bis vor kurzem haben sie gut funktioniert. Jetzt schreibt das neue System von Google die Bilder neu und speichert sie (angeblich) im Cache.
Durch das neue Umschreiben meiner Bildlinks durch Google werden diese jedoch vollständig beschädigt, was zu einem Fehler von 500 und einem fehlerhaften Linkbild führt.
Nehmen wir an, meine normale Bild-URL lautet:
http://www.mysite.com/images/pic1.jpg
Google schreibt dies um in:
https://ci5.googleusercontent.com/proxy/vI79kajdUGm6Wk-fjyicDLjZbCB1w9NfkoZ-zQFOB2OpJ1ILmSvfvHmE56r72us5mIuIXCFiO3V8rgkZOjfhghTH0R07BbcQy5g=s0-d-e1-ft#http://www.mysite.com/images/pic1.jpg
An dieser URL befindet sich jedoch nichts.
Entweder stimmt etwas mit den von Google erstellten Links nicht oder die Bilder werden nicht auf den googleusercontent-Server hochgeladen, aber ich habe keine Ahnung, wie das Problem behoben werden kann.
Ich verwende PHP, die phpmailer-Bibliothek und einen Ubuntu-Server auf Amazon EC2, bin mir aber nicht sicher, ob dies mit dem Problem zusammenhängt.
Antworten:
Ich glaube, ich habe das Problem mit GoogleImageProxy herausgefunden.
Dies hängt mit dem CACHING-Konzept zusammen. Angenommen, Sie haben kürzlich Ihren PHP-Code auf Ihrem Server bereitgestellt, aber vergessen, Bilder hochzuladen. Sie haben einmal mit Ihrer E-Mail-Logik getestet. Ihr System hat eine HTML-E-Mail generiert. Wenn diese E-Mail auf dem Google Mail-Server eingeht, versucht GoogleImageProxy, die Bilder von Ihrer Website auf einem eigenen Proxyserver abzurufen und zu speichern. Beim Abrufen der Bilder hat GoogleImageProxy 404 Status für Ihre fehlenden Bilder und 403 für einige geschützte Bilder gefunden. GoogleImagesProxy hat diese Status auf einem eigenen Proxyserver gespeichert.
Beim Versuch, Ihre E-Mail zu öffnen, haben Sie 404 Status für Ihre Bilder festgestellt. Das ist etwas Verständliches. Sie haben sofort festgestellt, dass Sie vergessen haben, einige Bilder hochzuladen, und haben sie auf Ihren Server hochgeladen. Außerdem haben Sie einige Berechtigungen für geschützte Bilder festgelegt.
Sie sind jetzt alle fertig. Jetzt versuchen Sie erneut, Ihr PHP-E-Mail-Skript auszuführen. Als Ergebnis erhalten Sie eine weitere E-Mail in Ihrem Google Mail- oder Hotmail-Posteingang. Sie hatten alle Probleme mit Ihren Bildern behoben. Jetzt müssen die Bilder in Ihrem E-Mail-Inhalt angezeigt werden. Sie können die Bilder jedoch immer noch nicht sehen.
Ah, möglicherweise haben Sie vergessen, den Cache Ihres Browsers zu leeren. Leeren Sie den Cache Ihres Browsers und laden Sie die Google Mail- oder Hotmail-Seite erneut. Aber das Ergebnis wird immer noch das gleiche sein. Versuchen Sie, Dutzende von Fixes / Patches anzuwenden und Ihr PHP-E-Mail-Skript tausendmal auszuführen. Aber das Ergebnis wird immer noch das gleiche sein. Keine Verbesserung.
DAS ECHTE PROBLEM
Was zur Hölle ist los? Lass es mich dir erklären. Gehen Sie zu Ihrem Zugriffsprotokoll und versuchen Sie, Anfragen von GoogleImageProxy zu finden. Sie werden überrascht sein, dass nur zwei oder drei Anfragen von GoogleImageProxy eingehen, abhängig von der Anzahl der verschiedenen Bilder, die in Ihrer E-Mail verwendet werden. GoogleImageProxy hat nie versucht, Bilder abzurufen. Auch nachdem Sie die Probleme mit Ihren Bildern behoben haben, indem Sie fehlende Bilder hochgeladen und Berechtigungen für geschützte Bilder festgelegt haben. Warum? Das Löschen des Cache Ihres Browsers hat keine Auswirkungen. GoogleImageProxy ruft auch für Ihre neuere E-Mail niemals die neuen Bilder ab, da die Bilder jetzt zusammen mit ihrem letzten Statuscode in GoogleImageProxy zwischengespeichert und nicht in Ihrem eigenen Browser zwischengespeichert werden.
GoogleImageProxy hat ein eigenes Ablaufdatum für die Bilder festgelegt. Ich denke einen Monat. Jetzt wird die neue Kopie der Bilder nach dem Ablaufdatum abgerufen. Ich meine nach einem Monat. Sie können GoogleImageProxy nicht zwingen, die Bilder abzurufen. Es ist jedoch wichtig, dass Sie Bilder in Ihrer E-Mail anzeigen. Was kann die Lösung sein?
DIE LÖSUNG
Das Folgende ist die einzige Möglichkeit, GoogleImageProxy zum Abrufen Ihrer Bilder zu zwingen
?t=34343
Content-Type: image/jpeg
WICHTIGE NOTIZ
Versuchen Sie, den gesamten Vorgang für jede Ausführung des PHP-E-Mail-Skripts zu wiederholen. Denn jedes Mal, wenn GoogleImageProxy Ihre Bilder zwischenspeichert, müssen Sie den gleichen Vorgang bei jedem neuen Versuch wiederholen.
Hoffentlich wird dies das Problem für die meisten Menschen beheben.
quelle
Anhand Ihres Beispiels scheinen Sie herkömmliche Erweiterungen (.jpg, .png, .gif) zu verwenden. Einige Leute in diesem Thread , die dieselben Probleme beschreiben, mit denen Sie konfrontiert sind, haben angegeben, dass die Verwendung dieser Erweiterungen das Problem löst.
Andere mögliche Lösungen:
quelle
.svg
Bilder verwendet, und es wird bestätigt , dass diese vom Google-Proxy nicht unterstützt werden.pixel.gif
. Wenn Sie dies auf 1x1 transparent ändern, wirdpixel.png
der Proxy wie erwartet bereitgestellt. Seltsam.Ich hatte ein ähnliches Problem, das jedoch durch die Länge der URL verursacht wurde. Google generiert beim Zwischenspeichern eines Bildes aus Google Mail die folgende URL:
Der generierte Hash basiert auf der URL des Bildes, die Größe hängt jedoch von den verwendeten Zeichen ab. Ich habe mehrere Tests mit URLs unterschiedlicher Größe durchgeführt und festgestellt, dass das zwischengespeicherte Bild nicht konsistent geladen werden kann (400 / Ungültige Anforderung), wenn der Hash mehr als 2076 Zeichen lang ist (fast 2048 Byte + Meta? Nicht sicher).
Auch hier könnte die Bild-URL einen Hash generieren, der so viele Zeichen mit ~ 1000 Sonderzeichen oder mehr als 1500 einfachen Zeichen überschreitet. Wenn der Hash mehr als 2076 Zeichen lang ist, schlägt die Anforderung fehl.
Mir ist klar, dass dies ein alter Beitrag ist, aber hoffentlich hilft dies anderen Entwicklern, Google zu durchsuchen
quelle
Ich weiß, dass dies eine alte Frage ist, aber mir ist dasselbe passiert. Als ich meine Zugriffsprotokolle überprüfte, fand ich Folgendes:
Sie können sehen, dass mein Server den GOOGLEIMAGEPROXY blockiert hat und ihm eine verbotene Antwort gegeben hat. Ich habe mich entschlossen, meinen .htaccess zu überprüfen und sicher genug, dass ich den Begriff PROXY blockiere . Nach dem Entfernen des Begriffs werden die Bilder jetzt in Google Mail einwandfrei angezeigt. Hoffentlich hilft das.
quelle
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
HTTPS-Bildspeicherorte werden zwischengespeichert. Einige unserer Produktionsumgebungen haben keine Probleme mit dem Proxy-Speicherort von Google Mail-Bildern mithilfe einer HTTPS-URL. Ich könnte sehen, dass Google Mail Ihren Inhalt ignoriert, wenn das SSL-Zertifikat in irgendeiner Weise ungültig ist.
quelle
Ich habe es gerade versucht, nachdem ich das Bild ersetzt hatte (ohne den Bildnamen zu ändern).
Öffnen Sie die E-Mail in einem neuen Browser. Es wird ein neues Bild angezeigt
Strg + F5 (erzwingt eine Cache-Aktualisierung) im Chrome (meinem Standardbrowser) zeigt auch ein neues Bild an
quelle
Überprüfen Sie, ob der von Ihrem Server für die Bilddatei zurückgegebene Inhaltstyp korrekt ist.
Sie können dies mit Fiddler überprüfen.
quelle
In meinem Fall war die Größe der Datei das Problem, es waren 22 MB (ich weiß, richtig?), Und nachdem wir die Größe reduziert hatten, fing alles an, wie ein Zauber zu funktionieren.
Überprüfen Sie die Dateigröße und komprimieren Sie sie, wenn sie zu groß ist.
quelle
Ich weiß, dass dies eine alte Frage ist, aber ich bin auf dieses Problem gestoßen. In meinem Fall werden Bilder im Google Cloud Storage gespeichert. Interessant ist dieser Link
Gibt 307 (temporäre Umleitung) und einen
Location
Header zurück, der so etwas enthältGoogleImageProxy scheint 307 nicht richtig zu verarbeiten
quelle
Ich habe eine perfekte Lösung für dieses Problem, die bei mir funktioniert hat. Wenn Sie PHPMailer verwenden, müssen Sie in PHPMailer nur eine weitere Option hinzufügen, um ein solches Bild anzuhängen
$mail = new PHPMailer(); $mail->AddEmbeddedImage('../absolutepath/image/image.jpg', 'logoimg', '../absolutepath/image/image.jpg');
Hier haben wir den absoluten Pfad des Bildes angegeben und ihm einen Namen namens "logoimg" oder was auch immer Sie wollen.
Jetzt können Sie dieses Logo an einer beliebigen Stelle in Ihrem HTML-Body hinzufügen
$mail->Body = " <h1>Test of PHPMailer html body with image</h1> <p>This is a test picture: <img src=\"cid:logoimg\" /></p>"; $mail->send();
Das ist alles.
quelle
URL hinzufügen auto https://ci3.googleusercontent.com/proxy/jTpYlM6RUv7Wi8Hxjha4fzExKFy9mjyh133MKKfo3FuV3toLToG6zJcA0IAdIMEW75pY6pkEd2aOSVhWIn0A82q-24YaAd-_k00wIMHwIuUBiy9vEGrMpAW73HaHQmViuESP7A=s0-d-e1-ft#
quelle
Ich hatte dieses Problem, als ich Gifs verschickte. Ich habe festgestellt, dass die Dateigröße für den Googles Proxy-Server von Bedeutung ist. Ich schlage vor, die Dateien so klein wie möglich zu halten und zu prüfen, ob dies funktioniert. Sie können Ihr Google Mail-Konto verwenden und zum Testen ein Foto von einer URL hinzufügen. Wenn das GIF beim Verfassen Ihrer E-Mail angezeigt wird, ist es empfangbar.
fröhliche Codierung.
quelle
quelle
In meinem Fall war das Problem, dass der Pfad zum Bild in der E-Mail-Vorlage versehentlich dreifache Schrägstriche in der URL aufwies, z
https:///content.example.org/image.png
. Dies war schwer zu erkennen, und während es in anderen E-Mail-Clients funktionierte, die die URL erfolgreich auflösen konnten, war der Image-Proxy von Google nicht in der Lage, damit umzugehen, und führte zu einem 404 für die Proxy-Image-Adresse.quelle
Stellen Sie sicher, dass Google Mail Ihr Bild anfordert
http
, nichthttps
.Nehmen wir an, Ihre normale Bild-URL lautet:
Wechseln Sie also zu:
Ich habe das starke Gefühl, dass Googles Proxy nicht zwischengespeichert wird
https
.quelle
Es ist der 6. März und Sie haben das wahrscheinlich schon herausgefunden, aber ich dachte, ich würde mich einschalten, um anderen zu helfen. Ich habe festgestellt, dass JPGs in Google Mail nicht funktionieren. Das PNG-Format funktioniert hervorragend. Entschuldigung, ich kann nicht erklären warum, aber manchmal ist es besser nicht zu fragen warum. Verwenden Sie PNG!
quelle