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

时间:2019-02-19 15:49:15

标签: java pop3

通过搜索,我可以找到很多与此类似的问题,但据我所知,所有这些问题似乎都被误解了,或者与这个问题不太相同。

大概(也许不是,但似乎不太可能),一个电子邮件进程/服务器知道它保存了哪些电子邮件是因为它们“到达”了,而它保存了哪些记录是因为有人使用SMTP或类似的东西告诉服务器“发送” ”。

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

无论哪种方式,客户都可以通过一种简便而强大的方式来区分这些电子邮件吗?还是在发件人字段中对照该帐户提供最佳报价?我相信pop3消息支持标志,某些POP3 api则支持标志,但是也许服务器没有义务做出任何保证,而且我没有看到关于其含义的非常清楚的描述,所以我不能一意孤行地使用它们来区分它们。

对于实现,我更喜欢Java和com.sun.mail.pop3

我意识到这里有IMAP,但是在现阶段,我希望对POP3客户端实现进行非常小的更改,并考虑再次切换到IMAP。

谢谢。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

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