我正在使用C#从我的网络域读取电子邮件并使用OpenPop.net库。
它正在阅读电子邮件,但它只会收到新的电子邮件。我想让它像hotmail那样应该读取和读取两者然后使用CSS我会以不同的方式显示它们。请指导我如何做到这一点。
感谢
答案 0 :(得分:2)
POP3不是像IMAP这样的存储系统。
当您从POP3收到邮件时,它通常会从服务器中删除该邮件(永久)。这就是它的工作原理。
也许OpenPOP中有一个选项允许在检索后不删除服务器上的电子邮件。
答案 1 :(得分:2)
编辑:
我猜你正试图用他们的POP3从gmail中检索邮件。 Gmail有一些奇怪的非标准POP3行为。 Gmail将隐藏已检索的邮件,并忽略POP3 DELE命令。 有关此行为的详细信息,请参阅this related question。
其中一个Openpop示例显示了如何检索所有消息:
/// <summary>
/// Example showing:
/// - how to fetch all messages from a POP3 server
/// </summary>
/// <param name="hostname">Hostname of the server. For example: pop3.live.com</param>
/// <param name="port">Host port to connect to. Normally: 110 for plain POP3, 995 for SSL POP3</param>
/// <param name="useSsl">Whether or not to use SSL to connect to server</param>
/// <param name="username">Username of the user on the server</param>
/// <param name="password">Password of the user on the server</param>
/// <returns>All Messages on the POP3 server</returns>
public static List<Message> FetchAllMessages(string hostname, int port, bool useSsl, string username, string password)
{
// The client disconnects from the server when being disposed
using(Pop3Client client = new Pop3Client())
{
// Connect to the server
client.Connect(hostname, port, useSsl);
// Authenticate ourselves towards the server
client.Authenticate(username, password);
// Get the number of messages in the inbox
int messageCount = client.GetMessageCount();
// We want to download all messages
List<Message> allMessages = new List<Message>(messageCount);
// Messages are numbered in the interval: [1, messageCount]
// Ergo: message numbers are 1-based.
for(int i = 1; i <= messageCount; i++)
{
allMessages.Add(client.GetMessage(i));
}
// Now return the fetched messages
return allMessages;
}
}
答案 2 :(得分:1)
因为POP标准行为是:
而IMAP标准行为是:
如果POP库的级别足够低,您可以随时更改该行为。
答案 3 :(得分:0)
当您从smtp服务器获取电子邮件时,您可以做的就是将所有电子邮件写入数据库,因此下次打开应用程序时,您仍然可以阅读所有电子邮件。
通常邮件服务器在客户端收到邮件时删除邮件(在Outlook中,其他邮件客户端,有一个特定的设置可以打开/关闭它,也许OpenPop lib也有此设置)