我正在为 gmail 编写 Pop3 客户端。问题是,当电子邮件被下载时,它会从 pop3 服务器中删除。我尝试将 RSET 命令发送到服务器,但它不起作用。
我必须在断开连接之前或下载每封邮件之后发送 RSET 吗?
如果您发送/使用 DELE 命令,它应该只删除消息。由于您是自己编写的.. 只需不要使用 DELE 命令: http: //www.faqs.org/rfcs/rfc1939.html
RSET 命令也应该可以工作,参见 RFC 链接:
RSET
Arguments: none
Restrictions:
may only be given in the TRANSACTION state
Discussion:
If any messages have been marked as deleted by the POP3
server, they are unmarked. The POP3 server then replies
with a positive response.
Possible Responses:
+OK
Examples:
C: RSET
S: +OK maildrop has 2 messages (320 octets)
Gmail 的 POP3 配置有时可能令人困惑。在 Gmail 网络界面的“转发和 POP/IMAP”选项卡的“设置”中,您可以找到一个名为“当使用 POP 访问邮件时”的下拉列表。
这是值列表和Gmail 的行为:
一个。 “删除 Gmail 的副本”:通过发出 RETR 命令删除邮件。
湾。 “将 Gmail 的副本保留在收件箱中”:邮件留在收件箱中,Web 界面显示未读,但使用 POP3 客户端第二次收不到邮件。
C。 “存档 Gmail 的副本”:通过发出 RETR 命令删除邮件,但是可以使用 Web 界面找到它。
Gmail 只是忽略 DELE 命令,并且不遵循 POP3 标准。
由于 Gmail POP3 服务器不像普通的 POP3 服务器那样工作,它会自动隐藏旧邮件,即使邮件没有被 POP3 DELE 命令删除。
如果你想阅读Gmail邮箱中的所有邮件,你可以尝试实现或找一个IMAP4客户端。我可以使用 IMAP4 阅读 Gmail 邮箱中的所有电子邮件。
已经有一段时间了,但是在处理类似的问题时,我发现 TOP 命令没有在 GMail POP3 服务器中将邮件标记为已读。
因此,如果您没有完整阅读该消息,您肯定可以稍后再阅读。
希望能帮助到你。
Google 不处理传统意义上的 POP3。一旦你下载了一封邮件,它就会被标记为已下载,POP3 会像它已被删除一样。但实际上他们在服务器上保留了邮件的副本。