Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
NOTMUCH-SHOW(1) 		     notmuch			 NOTMUCH-SHOW(1)

NAME
     notmuch-show - show messages matching the given search terms

SYNOPSIS
     notmuch show [option ...] <search-term> ...

DESCRIPTION
     Shows all messages matching the search terms.

     See   notmuch-search-terms   for	details  of  the  supported  syntax  for
     <search-terms>.

     The messages will be grouped and sorted based on the threading (all replies
     to a particular message will appear immediately after that message in  date
     order).  The  output is not indented by default, but depth tags are printed
     so that proper indentation can be performed by a  post-processor  (such  as
     the emacs interface to notmuch).

     Supported options for show include

     --duplicate=N
	    Output  duplicate number N. The numbering starts from 1, and matches
	    the order used by search --duplicate and search --output=files

     --entire-thread=(true|false)
	    If true, notmuch show outputs all messages in the thread of any mes-
	    sage matching the search terms; if false, it outputs only the match-
	    ing messages. For --format=json and --format=sexp this  defaults  to
	    true. For other formats, this defaults to false.

     --format=(text|json|sexp|mbox|raw)

	    text (default for messages)
		   The default plain-text format has all text-content MIME parts
		   decoded.  Various components in the output, (message, header,
		   body, attachment, and MIME part), will be delimited	by  eas-
		   ily-parsed markers. Each marker consists of a Control-L char-
		   acter  (ASCII  decimal  12), the name of the marker, and then
		   either an opening or closing brace, ('{' or '}'),  to  either
		   open  or  close  the component. For a multipart MIME message,
		   these parts will be nested.

	    json   The output  is  formatted  with  Javascript	Object	Notation
		   (JSON).  This  format is more robust than the text format for
		   automated processing. The nested structure of multipart  MIME
		   messages  is reflected in nested JSON output. By default JSON
		   output includes all messages in a matching thread;  that  is,
		   by  default,  --format=json	sets --entire-thread. The caller
		   can disable this behaviour by setting  --entire-thread=false.
		   The	JSON  output  is always encoded as UTF-8 and any message
		   content included in the output will be  charset-converted  to
		   UTF-8.

	    sexp   The	output	is  formatted  as  the	Lisp s-expression (sexp)
		   equivalent of the JSON format above. Objects are formatted as
		   property lists whose keys are keywords (symbols preceded by a
		   colon). True is formatted as t and both false  and  null  are
		   formatted as nil. As for JSON, the s-expression output is al-
		   ways encoded as UTF-8.

	    mbox   All	matching  messages  are  output in the traditional, Unix
		   mbox format with each message being prefixed by a line begin-
		   ning with "From " and a blank line separating  each	message.
		   Lines in the message content beginning with "From " (preceded
		   by  zero or more '>' characters) have an additional '>' char-
		   acter added. This reversible escaping is termed "mboxrd" for-
		   mat and described in detail here:
		      -
		      http://homepage.ntlworld.com/jonathan.deboynepol-
		      lard/FGA/mail-mbox-formats.html

	    raw (default if --part is given)
		   Write the raw bytes of the given MIME part of  a  message  to
		   standard  out.  For	this format, it is an error to specify a
		   query that matches more than one message.

		   If the specified part is a leaf part, this outputs  the  body
		   of  the  part after performing content transfer decoding (but
		   no charset conversion). This is suitable for  saving  attach-
		   ments, for example.

		   For a multipart or message part, the output includes the part
		   headers  as	well as the body (including all child parts). No
		   decoding is performed because  multipart  and  message  parts
		   cannot  have non-trivial content transfer encoding. Consumers
		   of this may need to implement MIME decoding and similar func-
		   tions.

     --format-version=N
	    Use the specified structured output format version. This is intended
	    for programs that invoke notmuch internally. If omitted, the  latest
	    supported version will be used.

     --part=N
	    Output  the  single  decoded  MIME	part  N of a single message. The
	    search terms must match only a single  message.  Message  parts  are
	    numbered  in  a  depth-first walk of the message MIME structure, and
	    are identified in the 'json', 'sexp' or 'text' output formats.

	    Note that even a message with no MIME structure  or  a  single  body
	    part  still has two MIME parts: part 0 is the whole message (headers
	    and body) and part 1 is just the body.

     --sort=(newest-first|oldest-first)
	    This option can be used to present results in  either  chronological
	    order (oldest-first) or reverse chronological order (newest-first).

	    Only  threads as a whole are reordered.  Ordering of messages within
	    each thread will not be affected by this flag, since that  order  is
	    always determined by the thread's replies.

	    By	default,  results will be displayed in reverse chronological or-
	    der, (that is, the newest results will be displayed first).

     --offset=[-]N
	    Skip displaying the first N results. With the leading '-', start  at
	    the Nth result from the end.

     --limit=N
	    Limit the number of displayed results to N.

     --verify
	    Compute and report the validity of any MIME cryptographic signatures
	    found in the selected content (e.g., "multipart/signed" parts). Sta-
	    tus of the signature will be reported (currently only supported with
	    --format=json and --format=sexp), and the multipart/signed part will
	    be replaced by the signed data.

     --decrypt=(false|auto|true|stash)
	    If true, decrypt any MIME encrypted parts found in the selected con-
	    tent  (e.g.,  "multipart/encrypted" parts). Status of the decryption
	    will be reported (currently only supported	with  --format=json  and
	    --format=sexp)  and on successful decryption the multipart/encrypted
	    part will be replaced by the decrypted content.

	    stash behaves like true, but upon successful decryption it will also
	    stash the message's session key  in  the  database,  and  index  the
	    cleartext  of  the message, enabling automatic decryption in the fu-
	    ture.

	    If auto, and a session key is already known for the message, then it
	    will be decrypted, but notmuch will not try  to  access  the  user's
	    keys.

	    Use false to avoid even automatic decryption.

	    Non-automatic decryption (stash or true, in the absence of a stashed
	    session  key)  expects  a  functioning  gpg-agent(1)  to provide any
	    needed credentials. Without one, the decryption will fail.

	    Note: setting either true or stash here implies --verify.

	    Here is a table that summarizes each of these policies:
		      +---------------+-------+------+------+-------+
		      | 	      | false | auto | true | stash |
		      +---------------+-------+------+------+-------+
		      | Show  cleart- |       | X    | X    | X     |
		      | ext  if  ses- |       |      |	    |	    |
		      | sion  key  is |       |      |	    |	    |
		      | already known |       |      |	    |	    |
		      +---------------+-------+------+------+-------+
		      | Use    secret |       |      | X    | X     |
		      | keys to  show |       |      |	    |	    |
		      | cleartext     |       |      |	    |	    |
		      +---------------+-------+------+------+-------+
		      | Stash	  any |       |      |	    | X     |
		      | newly  recov- |       |      |	    |	    |
		      | ered  session |       |      |	    |	    |
		      | keys,	rein- |       |      |	    |	    |
		      | dexing	 mes- |       |      |	    |	    |
		      | sage if found |       |      |	    |	    |
		      +---------------+-------+------+------+-------+

	    Note: --decrypt=stash requires write access to the database.  Other-
	    wise, notmuch show operates entirely in read-only mode.

	    Default: auto

     --exclude=(true|false)
	    Specify whether to omit threads  only  matching  search.exclude_tags
	    from the search results (the default) or not. In either case the ex-
	    cluded  message  will  be  marked with the exclude flag (except when
	    output=mbox when there is nowhere to put the flag).

	    If --entire-thread is specified then complete threads  are	returned
	    regardless	(with  the excluded flag being set when appropriate) but
	    threads that only match in an excluded message are not returned when
	    --exclude=true.

	    The default is --exclude=true.

     --body=(true|false)
	    If true (the default) notmuch show includes the bodies of  the  mes-
	    sages  in the output; if false, bodies are omitted.  --body=false is
	    only implemented for the text, json and sexp formats and it  is  in-
	    compatible with --part > 0.

	    This  is  useful  if  the caller only needs the headers as body-less
	    output is much faster and substantially smaller.

     --include-html
	    Include "text/html" parts as part of the output (currently only sup-
	    ported with --format=text, --format=json and --format=sexp). By  de-
	    fault,  unless  --part=N  is used to select a specific part or --in-
	    clude-html is used to include all "text/html" parts,  no  part  with
	    content type "text/html" is included in the output.

     A	common	use  of notmuch show is to display a single thread of email mes-
     sages. For this, use a search term of "thread:<thread-id>" as can	be  seen
     in the first column of output from the notmuch-search command.

CONFIGURATION
     Structured  output  (json / sexp) is influenced by the configuration option
     show.extra_headers. See notmuch-config for details.

EXIT STATUS
     This command supports the following special exit status codes

     20     The requested format version is too old.

     21     The requested format version is too new.

SEE ALSO
     notmuch,  notmuch-config,	 notmuch-count,   notmuch-dump,   notmuch-hooks,
     notmuch-insert,	  notmuch-new,	    notmuch-reply,	notmuch-restore,
     notmuch-search, notmuch-search-terms, notmuch-tag

AUTHOR
     Carl Worth and many others

COPYRIGHT
     2009-2026, Carl Worth and many others

0.40				  Aug 27, 2026			 NOTMUCH-SHOW(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=notmuch-show&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help