Sample code for 30+ languages & platforms
PureBasic

End a POP3 Session Without Committing Deletions

See more POP3 Examples

Demonstrates the Chilkat MailMan.Pop3EndSessionNoQuit method, which closes the POP3 connection without sending the QUIT command. Pending deletion marks are not committed — messages marked with DELE during the session remain in the mailbox. This example marks a message for deletion and then abandons the session so the deletion does not take effect.

Background: POP3's deferred-deletion model effectively gives you a transaction: marks made with DELE are only applied when the session ends with QUIT. Ending without QUIT is therefore a rollback — useful if an error occurs mid-processing and you'd rather leave the mailbox untouched than risk deleting messages you failed to handle. Use Pop3EndSession when you do want the deletions committed.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkMailMan.pb"

Procedure ChilkatExample()

    success.i = 0

    ;  Demonstrates the MailMan.Pop3EndSessionNoQuit method, which closes the POP3 connection
    ;  WITHOUT sending the QUIT command.  Pending deletion marks are not committed -- messages
    ;  marked with DELE during the session remain in the mailbox.

    mailman.i = CkMailMan::ckCreate()
    If mailman.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ;  Configure the POP3 server connection.
    CkMailMan::setCkMailHost(mailman, "pop.example.com")
    CkMailMan::setCkMailPort(mailman, 995)
    CkMailMan::setCkPopSsl(mailman, 1)
    CkMailMan::setCkPopUsername(mailman, "user@example.com")
    CkMailMan::setCkPopPassword(mailman, "myPassword")

    success = CkMailMan::ckPop3BeginSession(mailman)
    If success = 0
        Debug CkMailMan::ckLastErrorText(mailman)
        CkMailMan::ckDispose(mailman)
        ProcedureReturn
    EndIf

    ;  Mark a message for deletion...
    success = CkMailMan::ckDeleteByMsgnum(mailman,1)
    If success = 0
        Debug CkMailMan::ckLastErrorText(mailman)
        CkMailMan::ckDispose(mailman)
        ProcedureReturn
    EndIf

    ;  ...but end the session without QUIT, so the deletion is NOT committed and the message
    ;  remains in the mailbox.
    success = CkMailMan::ckPop3EndSessionNoQuit(mailman)
    If success = 0
        Debug CkMailMan::ckLastErrorText(mailman)
        CkMailMan::ckDispose(mailman)
        ProcedureReturn
    EndIf

    Debug "Session closed without committing the pending deletion."


    CkMailMan::ckDispose(mailman)


    ProcedureReturn
EndProcedure