github.com/jordwest/imap-server@v0.0.0-20200627020849-1cf758ba359f/conn/command_expunge.go (about)

     1  package conn
     2  
     3  import (
     4  	"fmt"
     5  )
     6  
     7  func cmdExpunge(args commandArgs, c *Conn) {
     8  	if !c.assertSelected(args.ID(), readWrite) {
     9  		return
    10  	}
    11  
    12  	// Delete flagged messages.
    13  	msgs, err := c.SelectedMailbox.DeleteFlaggedMessages()
    14  	if err != nil {
    15  		c.writeResponse(args.ID(), "NO "+err.Error())
    16  		return
    17  	}
    18  
    19  	// Write sequence numbers of deleted messages.
    20  	for _, msg := range msgs {
    21  		c.writeResponse("", fmt.Sprintf("%d EXPUNGE", msg.SequenceNumber()))
    22  	}
    23  
    24  	// And we're done.
    25  	c.writeResponse(args.ID(), "OK EXPUNGE completed")
    26  }