java获取已经发送谷歌邮件的打开状态

1.前言 

        现在网上的方案都是在邮件里面插入一张图片的地址,当收件人打开之后,就会发送请求到指定路径的服务器上,然后在请求的controller里面处理邮件的状态,这个方案确实是行得通的,本文章只是给大家避个坑,因为这个方案在谷歌邮件上有些地方是需要注意的,要不然email里面插入图片是显示不出来的

2.我的处理

        我先去用了一下美国那边比较火的邮件追踪,发现别人的邮件追踪也是在邮件里面插入了图片地址,但是这个图片地址会被谷歌的代理服务器转发,这样别人就没有办法拿到打开人的ip地址,下面的图是用别人的邮件追踪:

        

        但是我这个需求是知道别人有没有打开这个邮件,所以这个不能拿到ip地址对我影响不大,然后我也按照这个思路,自己弄了一个小demo:

        但是这样有个问题,我是打算 https://tapp.cc/111.jpg 这个地址是返回图片的base64字符串,但是这里并没有显示出返回的图片

        但是我直接访问这个地址https://ci3.googleusercontent.com/meips/ADKq_NYJkbEDEbzIqq9I_nCLbkcoCgWLRe1VrjhQvu5szjrY3N-mFLm9otFRraL3SQEjrErRXlUyunlrQNk=s0-d-e1-ft#https://tapp.cc/111.jpg是可以进我的controller里面的,然后我也确实返回了一个base64的字符串,但是在页面缺是报404

        但是别人的邮件追踪的这个请求又是可以,所以我就直接访问了他的这地址:https://s3.amazonaws.com/mailtrack-signature/sender-notified-72.gif 里面的这个请求,然后我发现他的响应体里面是没有东西的,我就想是不是他直接把图片以流的形式返回了,然后我就改了我的请求,把图片以流的形式写到response里面就成功了

3.总结 

        在邮件里面插入图片的地址,一定要把图片以流的形式写入到response里面,否则在谷歌这边是报404

        注意!!:这个地址中一定要加随机数,要不然谷歌会进行缓存的!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/628462.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python mesh网格ply数据转pcd数据

目录 一、代码实现二、测试示例适用:基于open3d 实现mesh(ply)模型到点云pcd的格式转换。 一、代码实现 import open3d as o3d import numpy as npdef ply2stl(plyFile, pcdFile):mesh_ply = o3d.io.read_triangle_mesh(plyFile

HNU-模式识别-作业1-视频监控系统

模式识别-作业1 计科210X 甘晴void 202108010XXX 【评分:98/100】 题目: 查阅相关技术资料,根据自己家庭相应的情况,设计一个视频监控系统。要求: 系统功能说明系统布线图及说明系统软硬件配置说明 饱和式自家用…

C++ mapset

目录 相关知识介绍: 一、set 1、set的介绍 2、set的使用 1. set的模板参数列表 2. set的构造 3. set的迭代器 4. set的容量 5. set修改操作 6. 举例演示 二、multiset 1、multiset的介绍 2、multiset的使用 三、map 1、map的介绍 2、map的使用 1.…

基于Java SSM框架实现摄影器材租赁系统项目【项目源码+论文说明】

基于java的SSM框架实现摄影器材租赁系统演示 摘要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识&a…

跨境电商账号频繁?你的IP可能“不干净”了

疫情促进了跨境电商行业的加速发展,许多卖家也抓住了这波流量红利,跨境电商月入数万,数十万甚至数百万的造福神话也不断在上演,但由于国内外电商运营模式不同,多店运营、用户数据收集、刷单等行为都受到了国外平台的严…

vue前端开发自学,异步加载组件,提升用户端的客户体验度

vue前端开发自学,异步加载组件,提升用户端的客户体验度!现实项目开发时,组件的数量非常庞大,如果都是一口气加载完,对手机用户来说,体验度会很差。因此,非常有必要使用异步加载。 那就是,用到了…

【WEB API自动化测试】接口文档与在线测试

这一篇我们主要介绍如何做API帮助文档,给API的调用人员介绍各个 API的功能, 输入参数,输出参数, 以及在线测试 API功能(这个也是方便我们自己开发调试) 我们先来看看我们的API最终帮助文档及在线测试最终达到的效果: 概要图 GET API 添加产品API: 删除…

mysql高级使用教程

mysql体系结构 1.连接层:主要就是做客户端的连接。 2.服务层:主要就是 缓存,分析器,优化器,执行器。 3.引擎层:就是一些存储引擎,包括索引的存储结构。 4.存储层:数据存储的磁盘…

Oracle JDK 8 中的 computeIfAbsent 方法及实践

Java 8 引入了一系列新特性,其中之一是对 Map 接口的增强,其中包括了 computeIfAbsent 方法。这个方法为处理映射提供了一种便捷而强大的方式,允许在键不存在或对应的值为 null 时,动态计算新的值并将其放入映射。在本篇博客中&am…

K8S--Ingress的作用

原文网址:K8S--Ingress的作用-CSDN博客 简介 本文介绍K8S的Ingress的作用。 ----------------------------------------------------------------------------------------------- 分享Java真实高频面试题,吊打面试官: Java后端真实面试题…

Java SE入门及基础(8)

关系运算符和逻辑运算符 1. 关系运算符 关系运算符包含 > < > < ! boolean result 2 > 3 ; boolean result1 10 10 ; 关系运算符比较的结果是一个布尔值 2. 逻辑运算符 逻辑运算符包含&#xff1a; 逻辑与 &&&#xff…

ChatGPT 淘金潮(全)

原文&#xff1a;The ChatGPT GoldRush 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 一、ChatGPT 简介 什么是 ChatGPT&#xff1f; ChatGPT 是由 OpenAI 基于 GPT-4 架构创建的大型语言模型。它旨在理解和回应自然语言文本输入&#xff0c;使得可以与机器进行对话…

uniapp自带的选择日期的使用

年月日的下拉框 直接看代码 <view class"uni-title uni-common-pl">日期选择器</view><view class"uni-list"><view class"uni-list-cell"><view class"uni-list-cell-left">当前选择</view>&…

docker部署wiki.js

wiki.js介绍 Wiki.js 是一个基于 Node.js 的开源、轻量级、美观和强大的 Wiki 应用程序。 不仅支持全文检索、用户权限管理、页面定制等功能&#xff0c;还具备良好的用户体验。其灵活的扩展性使得我们可以根据项目的实际需求对其进行定制和扩展。 选择 Wiki.js 作为企业知识库…

Django REST框架

Django REST框架 DRF简介第一个DRF应用DRF序列化器DRF序列化嵌套和嵌套关系DRF序列化自定义字段和方法DRF序列化验证数据DRF序列化Meta类DRF视图类&#xff08;View Classes&#xff09;DRF视图类APIViewDRF视图类ListCreateAPIViewDRF视图类RetrieveUpdateDestroyAPIViewDRF视…

CSS如何实现旋转:深入理解与实用技巧

在Web开发中&#xff0c;CSS&#xff08;层叠样式表&#xff09;是一种强大的工具&#xff0c;它不仅能够控制网页的布局和样式&#xff0c;还能实现各种视觉效果&#xff0c;包括元素的旋转。本文将深入探讨如何使用CSS实现旋转效果&#xff0c;并提供一些实用的技巧和示例。 …

如何隐藏服务器真实IP地址,隐藏服务器IP有什么好处

首先我们介绍了隐藏服务器IP的概念及工作模式&#xff0c;接着阐述了其对于DDoS攻击的防护作用。然后介绍了如何利用隐藏服务器IP增加系统性能和稳定性。接着我们讲述了如何隐藏服务器IP防止黑客攻击&#xff0c;最后总结了隐藏服务器IP在保护服务器和用户数据方面发挥的作用。…

关于html导出word总结一

总结 测试结果不理想&#xff0c;html-to-docx 和 html-docx-js 最终导出的结果 都 差强人意&#xff0c;效果可以见末尾的附图 环境 "electron": "24.3.0" 依赖库 html-docx-js html-docx-js - npm html-to-docx html-to-docx - npm file-saver…

消息中间件作用

一&#xff1a;消息队列的主要作用是什么&#xff1f; 1.消息队列的特性&#xff1a; 业务无关&#xff0c;一个具有普适性质的消息队列组件不需要考虑上层的业务模型&#xff0c;只做好消息的分发就可以了&#xff0c;上层业务的不同模块反而需要依赖消息队列所定义的规范进行…

Docker部署Jira、Confluence、Bitbucket、Bamboo、Crowd,Atlassian全家桶

文章目录 省流&#xff1a;注意&#xff1a;解决方案&#xff1a; 1.docker-compose文件2.其他服务都正常启动&#xff0c;唯独Bitbucket不行。日志错误刚启动时候重启后查询分析原因再针对第一点排查看样子是安装的bitbucket和系统环境有冲突问题&#xff1f; 结论&#xff1a…