summaryrefslogtreecommitdiffstats
path: root/doc/src/04020-module-mails.md
diff options
context:
space:
mode:
Diffstat (limited to 'doc/src/04020-module-mails.md')
-rw-r--r--doc/src/04020-module-mails.md357
1 files changed, 1 insertions, 356 deletions
diff --git a/doc/src/04020-module-mails.md b/doc/src/04020-module-mails.md
index 1786dfe9..75d70ccc 100644
--- a/doc/src/04020-module-mails.md
+++ b/doc/src/04020-module-mails.md
@@ -1,359 +1,4 @@
## Mails {#sec:modules:mails}
----
-
-**NOTE:** This is mostly a todo-list for the `imag-mail` command. Nothing shown
-here is implemented. This "documentation-to-be" should be moved to
-`imag-mail --help` eventually.
-This list might be incomplete, details might be not possible to implement in the
-way described or other dragons.
-
-**Target audience:** People who want to implement `imag-mail`.
-
----
-
-The Mails module implements a commandline email client. Emails can be written
-(via `$EDITOR`) and viewed, also in threads. Emails can be crawled for creating
-new contacts.
-
-A Text User Interface is not planned, but might be there at some point.
-
-The mail module implements a minimal Email client. It does not handle IMAP
-syncing or SMTP things, it is just a _viewer_ for emails (a MUA).
-
-The goal of the initial implementation is only a CLI, not a TUI like mutt
-offers, for example (but that might be implemented later). As this is an imag
-module, it also creates references to mails inside the imag store which can be
-used by other tools then (for example `imag-link` to link an entry with a mail -
-or the imag entry representing that mail).
-
-So this module offers functionality to read (Maildir) mailboxes, search for and
-list mails and mail-threads and reply to mails (by spawning the `$EDITOR`).
-
-Outgoing mails are pushed to a special directory and can later on be send via
-`imag-mail` which calls a MTA (for example msmtp) and also creates store entries
-for the outgoing mails.
-
-
-### Configuration
-
-The following configuration variables are available for the imag-mail command:
-
-* `mail.defaultaccount`: The name of the default account to use if the
- commandline parameters do not specify which account to use. The name must be
- in the `mail.accounts` array.
-* `mail.accounts`:
- An array of account configuration. Each element in the array is a table of the
- following key-value pairs:
- * `name`: the name of the account. Names must be unique. Required.
- * `outgoingbox`: Path to mailbox to use for outgoing email. Required.
- * `draftbox`: Path to mailbox to use for outgoing email. Required.
- * `sentbox`: Path to mailbox to use for sent email. Required.
- ` `maildirroot`: Path to folder where all mailboxes for this account are
- located. Required.
- * `fetchcommand`: What commandline to invoke for fetching mails for this
- account. Optional - if not used, the global `mail.fetchcommand` will be
- used.
- * `postfetchcommand`: What commandline to invoke after fetching mails for this
- account. Optional - if not used, the global `mail.postfetchcommand` will be
- used.
- * `sendcommand`: What commandline to invoke for sending mails for this
- account. Optional - if not used, the global `mail.sendcommand` will be used.
- * `postsendcommand`: What commandline to invoke after sending mails for this
- account. Optional - if not used, the global `mail.postsendcommand` will be
- used.
-* `mail.fetchcommand`: Command to use for fetching mail if no account-specific
- command was specified
- Available variables:
- * `{{accountname}}` - name of the account to fetch mail for.
- * `{{boxes}}` - a list of maildir paths to the boxes to fetch email for.
- imag provides primitives to transform this array.
- An example configuration for fetching with `offlineimap` might look like
- this: `offlineimap -a {{accountname}} -f {{concatsep "," (replace "/home/user/mails/" "" boxes)}}`
- to concatenate all boxes with a comma after removing a prefix.
- For a complete list of transformation functions, the `--help` flag shall
- be consulted.
- For more complicated transformations a bash/ruby/python script might be
- appropriate.
-* `mail.postfetchcommand`: Command to use after fetching mail if no
- account-specific command was specified
- Available variables: Same as `mail.fetchcommand`.
-* `mail.postsendcommand`: Command to use after sending mail if no
- account-specific command was specified
- Available variables: Same as `mail.sendcommand`.
-* `mail.sendcommand`: Command to use for sending mail if no account-specific
- command was specified
- * `{{accountname}}` - name of the account to fetch mail for.
- * `{{mailfile}}` - The path of the mail to send
-
-
-### CLI
-
-The CLI of the imag-mail module is planned as follows:
-
-* imag mail
-
- -A, --account - Specify the "account" to use for the opperation by name.
- If none is specified, the configuration is searched for a
- default command.
-
-* imag mail track <path> [opts...]
- Track a new mail, mail file passed as path
-
-* imag mail scan <path> [opts...]
- Scan a maildir and track all untracked mails
-
- --refind - re-find messages. Loads all messages which are known to imag
- and compares identifiers, to update the imag-internal cache if
- a mail got moved.
- Without this flag, a modified email file might be added to
- the imag store again, even if there's another entry in the
- imag store refering to the same file.
-
-* imag mail list <args...>
- List mails in a given mailbox for a given account or the default account
-
- -S, --style - print messages in a certain style
- Available:
- - 'linewise'
- - 'thread'
-
- -g, --grep - Filter by grepping for a pattern in body and subject
-
- -d, --daterange - Filter by date(range)
-
- -F, --filter - Filter by passed filter
-
- --thread - Print only messages from the same thread as the found ones
-
- --format=<fmt> - Format mails for showing.
- --format always colorizes output (specify color in config)
- except when using --no-pager or piping output.
-
- When --tree is passed, the format is applied to the
- fragment _after_ the tree graphic.
-
- Default mode is 'default'.
-
- Modes:
- - 'subject': <Subject>
- - 'simple': <From>: <Subject>
- - 'default': <Date> - <From>: <Subject>
- - 'fmt:<fmt>' format with passed format
-
- Additional formats can be specified via the configuration
- file. If a format has the same name as a predefined one,
- the config overrides the predefined formats.
-
- --color - Colorize output (default).
- --no-color - Do never colorize output.
-
-* imag mail show <args...>
- Show mail(s) - either in pager or by printing them to stdout.
-
- Mails are specified by message id or imag entry
-
- --refind - If a imag entry is passed but the mail file is not there,
- try to re-find it.
-
- --refind-in - Same as --refind, but a path to a Maildir or a tree of
- Maildirs might be passed to narrow down search space.
-
- -C, --concat - Open all mails in one pager (by concatenating them)
- instead of one pager per message.
-
- --pager - Use pager to show mails (default).
-
- --no-pager - Do not use pager to show mails.
-
- --multipager - Pass all mails as arguments to one pager call instead of
- calling the pager on each mail individually (default).
- Only possible with --pager.
-
- --no-multipager - Disable --multipager.
- Only possible with --pager.
-
- --format=<fmt> - Format mails for showing.
- --format always colorizes emails (specify color in config)
- except when using --no-pager or piping output.
-
- Modes:
- - 'simple': Remove headers, except
- From, To, Cc, Subject, Date,
- Message-Id/References/In-Reply-To
- - 'simple-imag': Same as 'simple' but also show imag
- entry id.
- - 'print': Show everything
- - 'full': Show everything and add imag entry id
- - 'minimal': Remove headers, except From, To, Cc, Subject, Date,
- - 'tiny': Remove headers, except From, To, Subject
- - 'fmt:<fmt>' format with passed format
-
- Additional formats can be specified via the configuration
- file. If a format has the same name as a predefined one,
- the config overrides the predefined formats.
-
- --no-format - Disable all formatting (same as --pretty=print and
- disabling color output).
-
- --color - Colorize output (default).
- --no-color - Do never colorize output.
-
-* imag mail new <args...>
- Craft a new mail and safe it in the <outgoing> folder
-
- Requires configuration:
- * mail.accounts.[.draftbox]
- * mail.accounts.[.outgoingbox]
-
- --outbox - Specify the outbox for where the new mail should be stored
- in, if it is not given in the config (or to override it)
-
- --to - Specify to whom to send.
- If the specified string does not contain a valid email
- address, `imag contact find` is used to find the email
- address (if not suppressed via --no-autofind).
- Multiple allowed.
-
- --cc - Specify to whom to send in CC.
- If the specified string does not contain a valid email
- address, `imag contact find` is used to find the email
- address (if not suppressed via --no-autofind).
- Multiple allowed.
-
- --bcc - Specify to whom to send in BCC.
- If the specified string does not contain a valid email
- address, `imag contact find` is used to find the email
- address (if not suppressed via --no-autofind).
- Multiple allowed.
-
- --no-autofind - Do not automatically find contacts
- with `imag contact find`.
-
- --fcc - Specify to store a copy of the mail somewhere.
- Multiple allowed.
-
- --subject - Specify subject.
-
- --gpg-sign - Sign with gpg.
-
- --gpg-crypt - Crypt with gpg to all recipients.
-
- --no-track - Do not track new mailfile with imag.
-
- -D, --draft - Do not safe in "outgoing" box but rather in "draft" box.
-
-* imag mail compose <args...>
- Same as 'new'.
-
-* imag mail fetch <args...>
- Fetch emails
-
- Requires configuration:
- * mail.fetchcommand or mail.accounts[.fetchcommand]
- * mail.postfetchcommand or mail.accounts[.postfetchcommand] (optional)
-
- --all - Fetch for all accounts
- --boxes - Fetch only some boxes (does not work with --all)
-
-* imag mail send <args...>
- Send emails from the outgoing folder, also move them to 'sent' boxes
-
- Requires configuration:
- * mail.accounts.[.outgoingbox]
- * mail.accounts.[.sentbox]
- * mail.sendcommand or mail.accounts[.sendcommand]
- * mail.postsendcommand or mail.accounts[.postsendcommand] (optional)
-
- --outbox - Specify the outbox for where the mails that are about to
- be send are stored in, if it is not given in the config
- (or to override it).
-
- --sentbox - Specify the sentbox for where the sent mails should be
- moved after sending them, if it is not given in the config
- (or to override it).
-
- --no-move-sent - Do not move mail to the "sent" folder after sending it.
-
- --confirm - Confirm each mail before sending (default).
-
- --no-confirm - Do not confirm each mail before sending.
-
- --no-track - Do not track mailfile with imag. Does only work if `imag
- mail new` was invoked with `--no-track` (so that the mail
- is not tracked already).
-
-* imag mail mv <src mail> <dstbox>
- Move a mail to another mailbox
-
- --thread - Move the complete thread of emails belonging to the
- specified mail.
-
- --no-track - Do not track new mailfile with imag. Does not work if
- mailfile is already tracked with imag.
-
-* imag mail find <args...>
- Search for a mail (by header field (msgid, from, to, cc, subject, date,
- date-range), body, ...)
-
- --msgid
- --no-msgid
- --from
- --no-from
- --to
- --no-to
- --cc
- --no-cc
- --subject
- --no-subject
- --date
- --no-date
- --body
- --no-body
- --daterange - Toggle where to look at
-
- --print-entryid - Print imag entry id when finding mail
- --no-print-entryid - Do not print imag entry id when finding mail (default).
-
- --print=<what> - What to print for the found mails.
- Valid values:
- - msgid
- - subject
- - from
- - cc
- - to
- - date
- - filepath (default)
-
-* imag mail reply <args...>
- Reply to an email.
-
- Requires configuration: mail.accounts[.outgoingbox]
-
- Specify the mail to reply to by msgid, filepath or imag entry id.
-
- --add-to
- --add-cc
- --add-bcc - Add another recipient. Multiple allowed.
-
- --no-track - Do not track new mailfile with imag.
-
-### Format specifiers
-
-The `imag-mail` command supports formatting output automatically and via
-predefined formats in the configuration file or by passing formatting
-specifications via CLI.
-
-The available formatting variables are:
-
-* `H`: The complete message header as key-value-table
-* `subject`: The subject of the message
-* `date`: The date field of the message
-* `body`: The body of the message
-* `from`: The sender of the message
-* `to`: The address of the receipient of message
-* `fancyfromto`: The address of the sender of the message, or, if the sender was
- you, the receipient (prefixed with `F:` or `T:` respecively).
-
-<!-- more might be defined -->
+Frontend for imag mail handing, using notmuch as a mail database backend.