Tengo algunos correos electrónicos automáticos que se envían una vez finalizado el registro en mi sitio.
Hasta hace poco, funcionaban bien. Ahora el nuevo sistema de Google está reescribiendo las imágenes y almacenándolas en su caché (supuestamente)
Sin embargo, la nueva reescritura de Google de los enlaces de mi imagen los está rompiendo por completo, dando un error 500 y una imagen de enlace rota.
Digamos que mi URL de imagen normal es:
http://www.mysite.com/images/pic1.jpg
Google está reescribiendo esto para:
https://ci5.googleusercontent.com/proxy/vI79kajdUGm6Wk-fjyicDLjZbCB1w9NfkoZ-zQFOB2OpJ1ILmSvfvHmE56r72us5mIuIXCFiO3V8rgkZOjfhghTH0R07BbcQy5g=s0-d-e1-ft#http://www.mysite.com/images/pic1.jpg
Sin embargo, no hay nada en esa URL.
Entonces, o hay algún problema con los enlaces que está creando Google o las imágenes simplemente no se están cargando en el servidor de contenido de usuario de google, pero no tengo idea de cómo resolver el problema.
Estoy usando PHP, la biblioteca phpmailer y un servidor Ubuntu en Amazon EC2, pero no estoy seguro de que esté relacionado con el problema.
Respuestas:
Creo que he descubierto el problema de GoogleImageProxy.
Esto es algo relacionado con el concepto CACHING. supongamos que recientemente ha implementado su código php en su servidor, pero olvidó cargar imágenes. probó una vez con su lógica de correo electrónico. su sistema generó un correo electrónico HTML. Cuando este correo electrónico llegue al servidor de gmail, GoogleImageProxy intentará recuperar y almacenar las imágenes de su sitio en su propio servidor proxy. Mientras buscaba las imágenes, GoogleImageProxy encontró algunos estados 404 contra las imágenes que faltaban y 403 contra algunas imágenes protegidas. GoogleImagesProxy ha almacenado estos estados en su propio servidor proxy.
Ahora trató de abrir su correo electrónico, notó algunos estados 404 en sus imágenes. Esto es algo comprensible. Inmediatamente se dio cuenta de que olvidó cargar algunas imágenes, por lo que las subió a su servidor. y también ha arreglado algunos permisos contra imágenes protegidas.
Todo ha terminado ahora. Ahora intente ejecutar su script php-email una vez más. Como resultado, recibe otro correo electrónico en su bandeja de entrada de Gmail o Hotmail. había solucionado todos los problemas con sus imágenes. Ahora las imágenes deben mostrarse en el contenido de su correo electrónico. pero aún no puede ver las imágenes.
Ah, posiblemente olvidó borrar la memoria caché de su navegador. Borre la memoria caché de su navegador y cargue la página de gmail o hotmail una vez más. Pero el resultado seguirá siendo el mismo. Intente aplicar docenas de correcciones / parches e intente ejecutar su script php-email miles de veces. Pero el resultado seguirá siendo el mismo. Sin mejora.
EL PROBLEMA REAL
¿Qué diablos está pasando? Déjame explicarte. Vaya a su registro de acceso e intente encontrar solicitudes de GoogleImageProxy. Te sorprenderá ver que solo habrá 2 o 3 tres solicitudes de GoogleImageProxy dependiendo de la cantidad de imágenes diferentes utilizadas en tu correo electrónico. GoogleImageProxy nunca intentó recuperar imágenes Incluso después de haber solucionado los problemas con sus imágenes cargando las imágenes faltantes y estableciendo permisos para las imágenes protegidas. ¿Por qué? Limpiar la memoria caché de su navegador no tiene ningún impacto. GoogleImageProxy nunca buscará las imágenes nuevas, incluso para su correo electrónico más reciente, porque las imágenes ahora se almacenan en caché en GoogleImageProxy junto con su último código de estado y no en el de su propio navegador.
GoogleImageProxy ha establecido su propia fecha de caducidad para las imágenes. Creo que un mes. por lo que ahora se obtendrá una copia nueva de las imágenes después de la fecha de caducidad. Quiero decir después de un mes. No puede obligar a GoogleImageProxy a buscar las imágenes. Pero es importante que muestre imágenes en su correo electrónico. Cual puede ser la solución?
LA SOLUCIÓN
La siguiente es la única forma de obligar a GoogleImageProxy a buscar sus imágenes
?t=34343
Content-Type: image/jpeg
NOTA IMPORTANTE
Intente repetir todo el proceso para cada ejecución del script php-email. porque cada vez que GoogleImageProxy almacenará en caché sus imágenes y tendrá que repetir el mismo proceso para cada nuevo intento.
Con suerte, esto solucionará el problema para la mayoría de las personas.
fuente
Según tu ejemplo, parece que estás usando extensiones tradicionales (.jpg, .png, .gif). Algunas personas en este hilo , que describen los mismos problemas que enfrenta, han declarado que el uso de esas extensiones resuelve el problema.
Otras posibles soluciones:
fuente
.svg
imágenes, y se confirma que el proxy de Google no las admite.pixel.gif
. Cambiando esto a 1x1 transparentepixel.png
y el proxy sirvió como se esperaba. Extraño.Tuve un problema similar, pero fue causado por la longitud de la URL. Google genera la siguiente URL al almacenar en caché una imagen de gmail:
El hash generado se basa en la URL de la imagen, pero el tamaño variará según los caracteres utilizados. Ejecuté varias pruebas con URL de diferentes tamaños y descubrí que la imagen en caché no se cargaría de manera consistente (400 / Solicitud no válida) si el hash excede los 2076 caracteres de longitud (cerca de 2048 bytes + meta? No estoy seguro).
Nuevamente, la URL de la imagen podría generar un hash que exceda esta cantidad de caracteres en ~ 1000 caracteres especiales, o 1500+ caracteres simples. Si el hash supera los 2076 caracteres, la solicitud falla.
Me doy cuenta de que esta es una publicación antigua, pero espero que esto ayude a otros desarrolladores a buscar en Google
fuente
Sé que es una vieja pregunta, pero a mí me pasó lo mismo. Cuando revisé mis registros de acceso, esto es lo que encontré:
Puede ver que mi servidor estaba bloqueando GOOGLEIMAGEPROXY y le dio una respuesta 403 Prohibida . Decidí verificar mi .htaccess y, efectivamente, estaba bloqueando el término PROXY . Después de eliminar el término, las imágenes ahora aparecen bien en Gmail. Espero que ayude.
fuente
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
Las ubicaciones de las imágenes HTTPS se almacenan en caché. Varios de nuestros entornos de producción no tienen problemas con las ubicaciones de imágenes de proxy de Gmail mediante un URL HTTPS. Podría ver que gmail ignora su contenido si el certificado SSL no es válido de alguna manera.
fuente
Lo intenté, después de reemplazar la imagen (sin cambiar el nombre de la imagen)
Abra el correo electrónico en un nuevo navegador, muestra una nueva imagen
Ctrl + F5 (fuerza una actualización de caché) en Chrome (mi navegador predeterminado), también muestra una nueva imagen
fuente
Compruebe que el tipo de contenido devuelto por su servidor para el archivo de imagen sea correcto.
Puede verificar esto usando Fiddler.
fuente
En mi caso, el tamaño del archivo fue el problema, era de 22 Mb (lo sé, ¿no?), Y después de que redujimos el tamaño, todo empezó a funcionar a la perfección.
Verifique el tamaño del archivo y si es demasiado grande, comprímalo.
fuente
Sé que esta es una pregunta antigua, pero encontré este problema. En mi caso, las imágenes se almacenan en Google Cloud Storage. Lo interesante es ese enlace
devuelve 307 (redireccionamiento temporal) y un
Location
encabezado que contiene algo comoParece que GoogleImageProxy no procesa 307 correctamente
fuente
Tengo una solución perfecta para este problema, que funcionó para mí si está usando PHPMailer, entonces solo tiene que agregar otra opción en PHPMailer para adjuntar una imagen como esta
$mail = new PHPMailer(); $mail->AddEmbeddedImage('../absolutepath/image/image.jpg', 'logoimg', '../absolutepath/image/image.jpg');
Aquí le hemos dado la ruta absoluta de la imagen y le hemos dado un nombre llamado 'logoimg' o lo que quieras.
Ahora puede agregar este logoimg en cualquier lugar de su cuerpo HTML como este
$mail->Body = " <h1>Test of PHPMailer html body with image</h1> <p>This is a test picture: <img src=\"cid:logoimg\" /></p>"; $mail->send();
Eso es todo.
fuente
url agregar auto https://ci3.googleusercontent.com/proxy/jTpYlM6RUv7Wi8Hxjha4fzExKFy9mjyh133MKKfo3FuV3toLToG6zJcA0IAdIMEW75pY6pkEd2aOSVhWIn0A82qrIdAd2aOSVhWIn0A82qrIdAd2Ad9Ad9HWIn0A82qrIdApAd9Ad2Ad2Ad0A82qrIaaAd9
fuente
Tuve este problema cuando estaba enviando gifs. Descubrí que el tamaño del archivo es importante para el servidor Proxy de Google. Sugiero hacer los archivos lo más pequeños posible y ver si funciona. Puede usar su cuenta de Gmail y agregar una foto de una URL para probar. Si el gif aparece cuando está redactando su correo electrónico, se podrá recibir.
codificación feliz.
fuente
fuente
En mi caso de encontrarme con este problema, el problema fue que, accidentalmente, la ruta a la imagen en la plantilla de correo electrónico tenía barras triples en la URL, por ejemplo
https:///content.example.org/image.png
. Esto fue difícil de detectar, y mientras funcionaba en otros clientes de correo electrónico que podían resolver con éxito la URL, el proxy de imagen de Google no pudo manejarlo y resultó en un 404 para la dirección de imagen proxy.fuente
Asegúrese de que Gmail solicite su imagen
http
, nohttps
.Digamos que su URL de imagen normal es:
Así que cambia a:
Tengo la fuerte sensación de que el proxy de Google no almacena en caché
https
.fuente
Es 6 de marzo y probablemente ya lo hayas descubierto, pero pensé en intervenir para ayudar a otros. Descubrí que los archivos JPG no funcionan en gmail. El formato PNG funciona muy bien. Lo siento, no puedo explicar por qué, pero a veces es mejor no preguntar por qué. ¡Utilice PNG!
fuente