(be module.Storage, ctx *cli.Context)
| 712 | } |
| 713 | |
| 714 | func 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 { |
no test coverage detected