Otrzymałem automatyczne e-maile, które są wysyłane po zakończeniu rejestracji w mojej witrynie.
Do niedawna działały dobrze. Teraz nowy system Google przepisuje obrazy i przechowuje je w swojej pamięci podręcznej (podobno)
Jednak nowe przepisywanie przez Google linków do moich obrazów całkowicie je psuje, powodując błąd 500 i uszkodzony obraz linku.
Powiedzmy, że mój normalny adres URL obrazu to:
http://www.mysite.com/images/pic1.jpg
Google przepisuje to na:
https://ci5.googleusercontent.com/proxy/vI79kajdUGm6Wk-fjyicDLjZbCB1w9NfkoZ-zQFOB2OpJ1ILmSvfvHmE56r72us5mIuIXCFiO3V8rgkZOjfhghTH0R07BbcQy5g=s0-d-e1-ft#http://www.mysite.com/images/pic1.jpg
Jednak pod tym adresem URL nic nie ma.
Więc albo jest coś nie tak z linkami, które są tworzone przez Google, albo obrazy nie są po prostu przesyłane na serwer googleusercontent, ale nie mam pojęcia, jak rozwiązać ten problem.
Używam PHP, biblioteki phpmailer i serwera Ubuntu na Amazon EC2, ale nie jestem pewien, czy jest to związane z problemem.
Odpowiedzi:
Myślę, że rozwiązałem problem GoogleImageProxy.
To jest coś związanego z koncepcją CACHING. przypuśćmy, że niedawno wdrożyłeś kod php na serwerze, ale zapomniałeś załadować obrazy. raz przetestowałeś logikę poczty e-mail. Twój system wygenerował wiadomość e-mail w formacie HTML. Gdy ten e-mail dotrze do serwera Gmaila, GoogleImageProxy spróbuje pobrać i zapisać obrazy z Twojej witryny na swoim własnym serwerze proxy. podczas pobierania obrazów GoogleImageProxy znalazł około 404 statusów dla brakujących obrazów i 403 dla niektórych chronionych obrazów. GoogleImagesProxy przechował te stany na swoim własnym serwerze proxy.
Teraz, gdy próbowałeś otworzyć swój e-mail, zauważyłeś około 404 statusów na swoich obrazach. To jest coś zrozumiałego. Od razu zdałeś sobie sprawę, że zapomniałeś przesłać niektórych obrazów, więc przesłałeś je na swój serwer. a także ustaliłeś pewne uprawnienia do chronionych obrazów.
Wszystko gotowe. Teraz spróbuj ponownie uruchomić skrypt php-email. W rezultacie otrzymasz kolejną wiadomość e-mail w skrzynce odbiorczej Gmail lub Hotmail. naprawiłeś wszystkie problemy ze swoimi obrazami. Teraz obrazy muszą być wyświetlane w treści wiadomości e-mail. ale nadal nie możesz zobaczyć obrazów.
Ach, prawdopodobnie zapomniałeś wyczyścić pamięć podręczną przeglądarki. Wyczyść pamięć podręczną przeglądarki i ponownie załaduj stronę Gmail lub Hotmail. Ale wynik będzie nadal taki sam. Spróbuj zastosować dziesiątki poprawek / łatek i spróbuj tysiące razy uruchomić swój skrypt php-email. Ale wynik będzie nadal taki sam. Brak poprawy.
PRAWDZIWY PROBLEM
Co się do cholery dzieje? Pozwól, że ci to wyjaśnię. Przejdź do dziennika dostępu i spróbuj znaleźć żądania z GoogleImageProxy. Zdziwisz się, widząc, że będą tylko 2-3 żądania z GoogleImageProxy, w zależności od liczby różnych obrazów użytych w Twojej wiadomości e-mail. GoogleImageProxy nigdy nie próbowało pobierać obrazów Nawet po rozwiązaniu problemów z obrazami, przesyłając brakujące obrazy i ustawiając uprawnienia do obrazów chronionych. Czemu? Wyczyszczenie pamięci podręcznej przeglądarki nie ma żadnego wpływu. GoogleImageProxy nigdy nie pobierze nowych obrazów nawet dla nowszych wiadomości e-mail, ponieważ obrazy są teraz buforowane w GoogleImageProxy wraz z ich ostatnim kodem stanu i nie są przechowywane w pamięci podręcznej Twojej przeglądarki.
GoogleImageProxy wyznaczył własną datę ważności obrazów. Myślę, że miesiąc. więc teraz nowa kopia obrazów zostanie pobrana po upływie daty ważności. Mam na myśli po miesiącu. Nie możesz zmusić GoogleImageProxy do pobrania obrazów. Ale ważne jest, aby wyświetlać obrazy w wiadomości e-mail. Jakie może być rozwiązanie?
ROZWIĄZANIE
Oto jedyny sposób, aby zmusić GoogleImageProxy do pobrania obrazów
?t=34343
Content-Type: image/jpeg
WAŻNA UWAGA
Spróbuj powtórzyć cały proces dla każdego uruchomienia skryptu php-email. ponieważ za każdym razem GoogleImageProxy będzie buforować twoje obrazy i będziesz musiał powtarzać ten sam proces dla każdej nowej próby.
Mam nadzieję, że rozwiąże to problem większości ludzi.
źródło
Na podstawie Twojego przykładu wygląda na to, że używasz tradycyjnych rozszerzeń (.jpg, .png, .gif). Niektórzy ludzie w tym wątku , opisując te same problemy, z którymi się borykasz, stwierdzili, że użycie tych rozszerzeń rozwiązuje problem.
Inne możliwe rozwiązania:
źródło
.svg
obrazów i potwierdzono, że nie są one obsługiwane przez proxy Google.pixel.gif
. Zmieniając to na przezroczystość 1x1pixel.png
i proxy działało zgodnie z oczekiwaniami. Dziwne.Miałem podobny problem, ale był on spowodowany długością adresu URL. Google generuje następujący adres URL podczas buforowania obrazu z Gmaila:
Wygenerowany skrót jest oparty na adresie URL obrazu, ale rozmiar będzie się różnić w zależności od użytych znaków. Przeprowadziłem kilka testów z różnymi rozmiarami adresów URL i stwierdziłem, że buforowany obraz nie ładuje się konsekwentnie (400 / nieprawidłowe żądanie), jeśli hash przekracza długość 2076 znaków (blisko 2048 bajtów + meta? Nie jestem pewien).
Ponownie, adres URL obrazu może generować hash, który przekracza tę liczbę znaków przy ~ 1000 znaków specjalnych lub ponad 1500 prostych znaków. Jeśli długość skrótu przekracza 2076 znaków, żądanie kończy się niepowodzeniem.
Zdaję sobie sprawę, że to stary post, ale mam nadzieję, że pomoże to innym programistom przeszukiwać Google
źródło
Wiem, że to stare pytanie, ale mnie spotkało to samo. Kiedy sprawdziłem moje dzienniki dostępu, oto co znalazłem -
Możesz zobaczyć, że mój serwer blokował GOOGLEIMAGEPROXY, dając mu odpowiedź 403 Forbidden . Postanowiłem sprawdzić mój .htaccess i na pewno blokowałem termin PROXY . Po usunięciu terminu obrazy wyglądają teraz dobrze w Gmailu. Mam nadzieję, że to pomoże.
źródło
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
Lokalizacje obrazów HTTPS są buforowane. Kilka naszych środowisk produkcyjnych nie ma problemów z przekazywaniem przez Gmaila lokalizacji obrazów za pomocą protokołu HTTPS URI. Mogłem zobaczyć, jak Gmail ignoruje Twoje treści, jeśli certyfikat SSL jest w jakiś sposób nieprawidłowy.
źródło
Właśnie próbowałem, po wymianie obrazka (bez zmiany nazwy obrazka)
Otwórz wiadomość e-mail w nowej przeglądarce, pokazuje nowy obraz
Ctrl + f5 (wymusza odświeżenie pamięci podręcznej) w chrome (moja domyślna przeglądarka), pokazuje również nowy obraz
źródło
Sprawdź, czy typ zawartości zwrócony dla pliku obrazu przez serwer jest poprawny.
Możesz to sprawdzić za pomocą programu Fiddler.
źródło
W moim przypadku problemem był rozmiar pliku, był to 22 Mb (wiem, prawda?), A po zmniejszeniu rozmiaru wszystko zaczęło działać jak marzenie.
Sprawdź rozmiar pliku i jeśli jest za duży, skompresuj go.
źródło
Wiem, że to stare pytanie, ale napotkałem ten problem. W moim przypadku obrazy są przechowywane w Google Cloud Storage. Co ciekawe, to ten link
zwraca 307 (tymczasowe przekierowanie) i
Location
nagłówek zawierający coś podobnegoWygląda na to, że GoogleImageProxy nie przetwarza poprawnie 307
źródło
Mam idealne rozwiązanie tego problemu, które zadziałało u mnie jeśli używasz PHPMailera to wystarczy dodać kolejną opcję w PHPMailer do załączania takiego obrazu
$mail = new PHPMailer(); $mail->AddEmbeddedImage('../absolutepath/image/image.jpg', 'logoimg', '../absolutepath/image/image.jpg');
Tutaj podaliśmy absolutną ścieżkę obrazu i nadaliśmy mu nazwę „logoimg” lub cokolwiek chcesz.
Teraz możesz dodać to logoimg do dowolnego miejsca w treści HTML w ten sposób
$mail->Body = " <h1>Test of PHPMailer html body with image</h1> <p>This is a test picture: <img src=\"cid:logoimg\" /></p>"; $mail->send();
To wszystko.
źródło
adres url dodaj auto https://ci3.googleusercontent.com/proxy/jTpYlM6RUv7Wi8Hxjha4fzExKFy9mjyh133MKKfo3FuV3toLToG6zJcA0IAdIMEW75pY6pkEd2aOSVhWInAd0AVw-UBKYft=MKKfo3FuV3toLToG6zJcA0IAdIMEW75pY6pkEd2aOSVhWInAd0AVw-UBkYftEd2aWYQu7
źródło
Miałem ten problem, kiedy wysyłałem gify. Zauważyłem, że rozmiar pliku ma znaczenie dla serwera Googles Proxy. Sugeruję, aby pliki były tak małe, jak to możliwe i zobacz, czy to zadziała. Możesz użyć swojego konta Gmail i dodać zdjęcie z adresu URL do przetestowania. Jeśli gif pojawi się podczas tworzenia wiadomości e-mail, będzie można go odebrać.
szczęśliwego kodowania.
źródło
źródło
W moim przypadku natrafienia na ten problem, problem polegał na tym, że przypadkowo ścieżka do obrazka w szablonie e-maila miała potrójne ukośniki w adresie URL, np
https:///content.example.org/image.png
. Było to trudne do zauważenia i chociaż działało w innych klientach poczty e-mail, które mogły pomyślnie rozwiązać adres URL, serwer proxy obrazu Google nie był w stanie go obsłużyć i spowodował 404 dla adresu obrazu proxy.źródło
Upewnij się, że Gmail żąda ponownego przesłania obrazu
http
, a niehttps
.Powiedzmy, że Twój normalny adres URL obrazu to:
Więc zmień na:
Mam przeczucie, że serwer proxy Google nie buforuje pamięci podręcznej
https
.źródło
Jest 6 marca i prawdopodobnie już to rozgryzłeś, ale pomyślałem, że zadzwonię, aby pomóc innym. Odkryłem, że pliki JPG nie działają w Gmailu. Format PNG działa świetnie. Przepraszam, nie potrafię wyjaśnić dlaczego, ale czasami lepiej nie pytać dlaczego. Użyj PNG!
źródło