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 }