MCPcopy Create free account
hub / github.com/foxcpp/maddy / msgsList

Function msgsList

internal/cli/ctl/imap.go:714–792  ·  view source on GitHub ↗
(be module.Storage, ctx *cli.Context)

Source from the content-addressed store, hash-verified

712}
713
714func msgsList(be module.Storage, ctx *cli.Context) error {
715 username := ctx.Args().First()
716 if username == "" {
717 return cli.Exit("Error: USERNAME is required", 2)
718 }
719 mboxName := ctx.Args().Get(1)
720 if mboxName == "" {
721 return cli.Exit("Error: MAILBOX is required", 2)
722 }
723 seqset := ctx.Args().Get(2)
724 uid := ctx.Bool("uid")
725 if seqset == "" {
726 seqset = "1:*"
727 uid = true
728 } else if !uid {
729 fmt.Fprintln(os.Stderr, "WARNING: --uid=true will be the default in 0.7")
730 }
731
732 seq, err := imap.ParseSeqSet(seqset)
733 if err != nil {
734 return err
735 }
736
737 u, err := be.GetIMAPAcct(username)
738 if err != nil {
739 return err
740 }
741
742 _, mbox, err := u.GetMailbox(mboxName, true, nil)
743 if err != nil {
744 return err
745 }
746
747 ch := make(chan *imap.Message, 10)
748 go func() {
749 err = mbox.ListMessages(uid, seq, []imap.FetchItem{imap.FetchEnvelope, imap.FetchInternalDate, imap.FetchRFC822Size, imap.FetchFlags, imap.FetchUid}, ch)
750 }()
751
752 for msg := range ch {
753 if !ctx.Bool("full") {
754 fmt.Printf("UID %d: %s - %s\n %v, %v\n\n", msg.Uid, FormatAddressList(msg.Envelope.From), msg.Envelope.Subject, msg.Flags, msg.Envelope.Date)
755 continue
756 }
757
758 fmt.Println("- Server meta-data:")
759 fmt.Println("UID:", msg.Uid)
760 fmt.Println("Sequence number:", msg.SeqNum)
761 fmt.Println("Flags:", msg.Flags)
762 fmt.Println("Body size:", msg.Size)
763 fmt.Println("Internal date:", msg.InternalDate.Unix(), msg.InternalDate)
764 fmt.Println("- Envelope:")
765 if len(msg.Envelope.From) != 0 {
766 fmt.Println("From:", FormatAddressList(msg.Envelope.From))
767 }
768 if len(msg.Envelope.To) != 0 {
769 fmt.Println("To:", FormatAddressList(msg.Envelope.To))
770 }
771 if len(msg.Envelope.Cc) != 0 {

Callers 1

initFunction · 0.85

Calls 7

FormatAddressListFunction · 0.85
ArgsMethod · 0.80
BoolMethod · 0.80
PrintlnMethod · 0.80
GetIMAPAcctMethod · 0.65
GetMethod · 0.45
PrintfMethod · 0.45

Tested by

no test coverage detected