java 邮件跟踪_如何跟踪邮件已读状态(Java)
>圖片的展示形式:
html中圖片元素表示:
其中src部分是比較好玩的,我們可以用圖片服務器鏈接地址,例如:
我們也可以使用base64的圖片字符串,例如:
>利用圖片加載來跟蹤用戶打開郵件狀態:
我們可以利用img元素,在郵件正文隱藏一張圖片,src指向我們服務器的服務URL,例如:
當用戶打開郵件正文時,隱藏圖片會被加載,請求我們的服務URL時,我們便可以知道用戶已讀,當然郵件一定發送成功了。
>存在的問題:
上面的方法可以獲取用戶已讀狀態,但是在有的郵件客戶端,圖片無法隱藏,所以我們需要在服務URL請求結束后,真實返回一張圖片,但是圖片最好近乎不可見。
用java簡單生成一個不可見的圖片(一個近乎不可見的點),代碼如下:
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import javax.imageio.ImageIO;
import jodd.util.Base64;
public class TestImage {
public String getImageBase64() {
ByteArrayOutputStream baos = null;
StringBuffer sb = null;
try {
int width = 1;
int height = 1;
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = image.createGraphics();
g2d.setBackground(new Color(255, 255, 255));
g2d.setPaint(new Color(0, 0, 0));
g2d.clearRect(0, 0, width, height);
g2d.dispose();
baos = new ByteArrayOutputStream();
ImageIO.write(image, "png", baos);
sb = new StringBuffer("data:image/png;base64,");
sb.append(Base64.encodeToString(baos.toByteArray()));
} catch (Exception ex) {
ex.printStackTrace();
} finally {
if (baos != null) {
try {
baos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
// System.out.println(sb.toString());
return sb.toString();
}
public static void main(String[] args) {
new TestImage().getImageBase64();
}
}
>優化一下:
我們可以直接保存圖片base64字符串,它本身就代表圖片,無需每次生成,生成字符串如下:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR42mP4//8/AAX+Av4zEpUUAAAAAElFTkSuQmCC
我們在瀏覽器預覽一下,效果如下:
這樣我們利用image元素,成功跟蹤到用戶已讀郵件的狀態了。完
喜歡請關注微信公眾號:碼農小麥
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的java 邮件跟踪_如何跟踪邮件已读状态(Java)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 只引入部分elementui_腾讯动漫确
- 下一篇: 微型计算机继电器控制,可编程控制器与微机