java 邮件跟踪_如何跟踪邮件已读状态(Java)
>圖片的展示形式:
html中圖片元素表示:
其中src部分是比較好玩的,我們可以用圖片服務(wù)器鏈接地址,例如:
我們也可以使用base64的圖片字符串,例如:
>利用圖片加載來(lái)跟蹤用戶打開(kāi)郵件狀態(tài):
我們可以利用img元素,在郵件正文隱藏一張圖片,src指向我們服務(wù)器的服務(wù)URL,例如:
當(dāng)用戶打開(kāi)郵件正文時(shí),隱藏圖片會(huì)被加載,請(qǐng)求我們的服務(wù)URL時(shí),我們便可以知道用戶已讀,當(dāng)然郵件一定發(fā)送成功了。
>存在的問(wèn)題:
上面的方法可以獲取用戶已讀狀態(tài),但是在有的郵件客戶端,圖片無(wú)法隱藏,所以我們需要在服務(wù)URL請(qǐng)求結(jié)束后,真實(shí)返回一張圖片,但是圖片最好近乎不可見(jiàn)。
用java簡(jiǎn)單生成一個(gè)不可見(jiàn)的圖片(一個(gè)近乎不可見(jiàn)的點(diǎn)),代碼如下:
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();
}
}
>優(yōu)化一下:
我們可以直接保存圖片base64字符串,它本身就代表圖片,無(wú)需每次生成,生成字符串如下:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR42mP4//8/AAX+Av4zEpUUAAAAAElFTkSuQmCC
我們?cè)跒g覽器預(yù)覽一下,效果如下:
這樣我們利用image元素,成功跟蹤到用戶已讀郵件的狀態(tài)了。完
喜歡請(qǐng)關(guān)注微信公眾號(hào):碼農(nóng)小麥
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的java 邮件跟踪_如何跟踪邮件已读状态(Java)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 只引入部分elementui_腾讯动漫确
- 下一篇: java美元兑换,(Java实现) 美元