我的POP3服务器正在向我发送已发送和已接收的消息 - 如何最终区分

问题描述 投票:0回答:2

从搜索中,我可以找到很多类似的问题,但是就我所知,所有这些问题都被误解为或者与这个问题不完全相同。

据推测(可能不是,但似乎不太可能)电子邮件进程/服务器知道它保存了哪些电子邮件,因为它们“到达”并且它保存记录,因为有人使用SMTP或类似信息告诉服务器“发送”电子邮件出。

如果POP3客户端从服务器检索大量电子邮件(我们从观察中得知)其中一些电子邮件是服务器被告知发送的电子邮件,有些是收到的电子邮件,那么pop3服务器违反了协议,因为它提供下载,概念上不在“收件箱”中的电子邮件,或者它可以自由发送它想要的东西,因为POP3没有文件夹和电子邮件的概念是电子邮件。

无论哪种方式,客户端是否有一种简单而强大的方法来区分这些电子邮件?或者是根据提供的最佳帐户检查来自字段?我相信pop3消息支持标志,一些POP3 apis可以做,但也许服务器没有义务做出任何保证,加上我没有看到他们意思的非常明确的描述,所以我不知道如果他们可以勉强用来区分。

为了实现,我的偏好是Java和com.sun.mail.pop3

我意识到有IMAP,但在这个阶段我想尽可能对POP3客户端实现做一个非常小的改变,并看看另一次切换到IMAP。

谢谢。

java pop3
2个回答
0
投票

POP3是一种获取收件箱邮件的协议。要发送邮件,请使用SMTP协议。

据我所知,您使用SMTP联系服务器并向服务器发送消息。然后,服务器将此邮件传递到相应的目标邮件服务器,并将邮件存储在该收件箱中。另一方面,您使用POP3联系您自己的收件箱,以接收存储在收件箱中的邮件。因此,输入和发送电子邮件之间永远不应该有任何冲突,因为这是两个不同的事情,为您的邮箱提供pop3和smtp的服务器可以是总共不同位置上的两个完全不同的服务器。因此,在一个邮件服务器收件箱和发件箱内应该是两个不同的存储位置。


0
投票

“最终区分”取决于如何/为什么在POP3中看到消息。但是,尽力而为型解决方案将涉及子串扫描From字段以查找USER命令中提供的内容。如果正在使用基于令牌的身份验证机制,那么您需要从发出令牌的任何人那里获取电子邮件标识符,并在From头中查找该标识符。

作为背景,POP3中的基本概念被称为“maildrop”。大多数人在IMAP术语中将其等同于“收件箱”,但它不一定相同。例如,在存款时过滤到自定义文件夹中的邮件可能会显示在POP3的maildrop中,即使它未通过IMAP或Webmail显示在收件箱中。进入maildrop并因此在POP3中看到的内容因实现而异。

如果用户只选择POP3 / SMTP和Webmail,他们有时会自行发送BCC以确保服务器上某处存在副本,以便他们可以根据需要通过Webmail访问它。这是因为很少有SMTP实现自动将消息保存到用户的邮箱,而POP3没有机制将消息保存在用户代理本地的任何位置。对于那些在邮箱中自动保存已发送邮件的SMTP服务器,当涉及到POP3服务器时,它们可能只是将它放在maildrop中。

© www.soinside.com 2019 - 2024. All rights reserved.