电子邮件

邮箱里已读回执是什么原理?

收到已读回执就表示收信人打开过这封邮件了是吧?
关注者
46
被浏览
292,124

8 个回答

给邮件里插入一个1像素的图片,肉眼几乎不可见,对方如果打开了邮件,该远程资源被加载,那么就可以知道你已读了

安卓上不也这么玩吗

但是这招不见得好用,很多客户端会默认拦截这玩意,如下是outlook

网易最近上线了该功能

经过测试,确实有这么个图像

但不知为何,即使我进行了下载,网易那边也仍然显示未读

发布于 2023-08-07 18:36

目前看来有三种方法:

1。在邮件头部携带 “希望获取已读回执” 的信息。

优点:光明正大,是获取已读回执的正当方法。

缺点:需要收件人手动确认回执,有些人可能无所谓回不回执,只是懒得确认,那你就获取不到。


2。在邮件内携带一个图片,检查到图片被访问即已读。

优点:无需收件人确认。

缺点:

a 可能侵犯了收件人的选择权

b 目前大多数邮箱对图片有过滤,又或者类似 Gmail 一样会先内部下载图片,这样会影响准确性

c 对纯文本的邮件客户端不友好


3。邮件服务商内置功能,在收件人查询邮件时,通知寄件人已读

优点:准确率较高,而且这种功能一般默认开启但是可以手动关闭,在保证了选择权的同时让无所谓的人能正确显示状态。

缺点:只兼容自家邮箱,对其他域名邮箱不生效。

发布于 2023-08-09 11:29

回执的原理是在发邮件的时候告知对方需要回执,如QQ为例

收到邮件后,会显示“回执”按钮,点击“发送”后,发件人就可以在邮箱里收到一封回执邮件。其实就多了一封通知已打开邮件的邮件通知。

原理是在发邮件的头文件里加Disposition-Notification-To:"发件人邮箱"。如QQ

Disposition-Notification-To: "=?gb18030?B?xL7X07rEZXJpYw==?=" <phpxx@qq.com>

发布于 2021-05-04 21:41

你设置的已读回执是需要收件人配合才能接收到的,你发给别人设置了已读回执,那么收件人每次读这封邮件都会提示”是否回复对方已读状态“这样的提示,收件人点击否的时候就没有回复。

发布于 2014-09-09 11:12

邮件 已读回执是所有通讯软件“已读显示”的开山鼻祖

当初发明邮件“已读回执”是为了方便收件人查看所发邮件时,收件人能收到通知,不必为了对方有没有查看邮件而牵肠挂肚,甚至重新发一封邮件询问对方。

邮箱里已读回执是通过一种称为"MDN"(Message Disposition Notification)的技术实现的。它允许发送方得知邮件是否被接收和阅读。这种技术基于邮件传输协议(如SMTP)和邮件客户端之间的通信。

目前,大部分企业邮箱(比如 亿邮企业邮箱)都具有“已读回执”功能。比如用邮件通知重要事务,而且是必须通知到每一个相关人员,这种情况下,怎么保证所有人都看到了你所说的事务呢?已读回执就能很好地解决这个问题,只要对方点开了邮件,发件人就能收到回执,大大提高了整个流程的工作效率。

发布于 2024-04-18 17:19

已读回执(read receipts)是Email标准协议的一部分,邮箱软件如果按照RFC协议开发,必须提供支持。


微软Exchange团队在技术社区里专门写了篇文章介绍已读回执的相关问题。

A read receipt is defined in RFC 2298 and has a mime content type of multipart/report; report-type=disposition-notification
This memo defines a MIME content-type [ 5] for message disposition
notifications (MDNs). An MDN can be used to notify the sender of a
message of any of several conditions that may occur after successful
delivery, such as display of the message contents, printing of the
message, deletion (without display) of the message, or the
recipient's refusal to provide MDNs.

也就是说,这其实是一种约定。

当邮件被显示、被打印、没有被阅读就被删除时,发送给邮件发送者的。


实际执行时,邮件阅读软件通常会询问阅读者的意见,要不要按照要求发送这些通知。

所以,这属于君子协议。

发布于 2024-01-06 00:55
    def send_email(self):
        """发送邮件"""
        # 设置登录及服务器信息
        try:
            sender = '**@163.com'  # 发送邮箱地址
            password = '***'  # 邮箱授权码,非登陆密码
            mailto_list = ['****']  # 群发邮箱地址
            smtp_server = 'smtp.163.com'  # smtp服务器

            # 发送纯文本格式的邮件
            msg = MIMEText('hello,send by python_test...', 'plain', 'utf-8')

            msg.add_header("Disposition-Notification-To", sender)
            msg['From'] = sender  # 发送邮箱地址
            msg['To'] = ';'.join(mailto_list)  # 发送多人邮件写法
            msg['Subject'] = '测试回执' + datetime.datetime.now().strftime('%Y-%m-%d') # 主题

            # server = smtplib.SMTP(smtp_server, 25)  # SMTP协议默认端口是25
            server = smtplib.SMTP()
            server.connect(smtp_server, 25)
            server.login(sender, password)  # login()方法用来登录SMTP服务器
            # server.set_debuglevel(1)  # 打印出和SMTP服务器交互的所有信息。
            server.sendmail(sender, mailto_list, msg.as_string())  # msg.as_string()把MIMEText对象变成str server.quit()
            # 第一个参数为发送者,第二个参数为接收者,可以添加多个例如:['hello@163.com','xxx@qq.com',]# 第三个参数为发送的内容

            server.quit()
        except Exception as a:
            print('失败')
            print(a.args)

重点是:MIMEText 中的属性 add_header添加参数:Disposition-Notification-To

msg = MIMEText('hello,send by python_test...', 'plain', 'utf-8')

msg.add_header("Disposition-Notification-To", sender)

发布于 2023-04-10 17:47

这功能没啥大用。

第一个就是说,必须和带有图片的邮件一起用,而且必须要点开。否则扫视下收件箱的邮件主题没有作用,搞营销的没有意义。而且现在大部分邮箱都不自动加载邮箱中的图片了,单纯点开邮件可能没用。

第二个,就是说,如果需要回复,建议邮件标题中写明。

编辑于 2024-05-08 23:56