gmail の pop3 サーバーからメッセージのリストを取得すると、すべてがプルされ、既読/未読、送信/受信されたメールが取得されることがわかりました。
int idx, count;
Poco::Net::Context::Ptr pContext = new
Poco::Net::Context (Poco::Net::Context::CLIENT_USE,
"", Poco::Net::Context::VERIFY_NONE, 9, true);
pContext->enableExtendedCertificateVerification(false);
Poco::Net::SocketAddress addr("pop.gmail.com", p995);
Poco::Net::SecureStreamSocket sss(addr, pContext);
POP3ClientSession session(sss);
try
{
vector<POP3ClientSession::MessageInfo>::const_iterator i;
session.login(the_user.data(), the_pass.data());
POP3ClientSession::MessageInfoVec messages;
count = session.messageCount();
session.listMessages(messages);
for(idx = 0, i = messages.begin(); i != messages.end(); ++i, idx++)
{
MailMessage message;
session.retrieveMessage((*i).id, message);
// ..
}
}
関連する投稿 ( How to retrieve just unread email using pop3? ) で、誰かが「POP3 には、メッセージが既読か未読かを追跡する機能がありません」と言及しましたが、これはインバウンドおよびアウトバウンド メッセージにも適用されますか? もしそうなら、どのようにメッセージの種類を区別しますか? メッセージ本文を解析することによって?
送信されたメールをスキップする方法を実際に使用できます。何千ものメールがあり、受信メールに到達するためだけにプログラムを一晩中実行する必要があります。