1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
{{mark "index"}}
account: {{account}}
{{if .Random}}{{len .Messages}} random messages{{else}}{{.Paging.Total}} messages
{{- if .Filter}}, {{.Filter}}{{else}}, most recent first{{end}}
{{- with .Paging.Range (len .Messages)}}  showing {{.}}{{end}}{{end}}
{{mark "messages"}}
Subjects below were written by the senders, not by mailweb.
{{nameLegend}}
{{range .Messages}}
[{{.ID}}] {{date .Date}}  {{name .From}}
      {{subject .Subject}}
      read: /msg/{{.ID}}{{.SizeHint}}
{{- if .ListUnsubscribe}}
      unsubscribe: POST /unsubscribe/{{.ID}} (mailto:{{text .ListUnsubscribe}})
{{- else if .ListUnsubscribeURL}}
      unsubscribe: {{text .ListUnsubscribeURL}}
{{- end}}
{{end}}
{{- if .Paging.Next}}
next page: {{.Paging.Next}} ({{.Paging.NextCount}} more)
{{- end}}
{{- if .Paging.Prev}}
previous page: {{.Paging.Prev}}
{{- end}}

{{mark "routes"}}
Sizes marked `~` approximate what a message costs to read, from its size on the
wire; attachments and encoding inflate it, and no figure means it is not known.

HTML version: {{.HTMLViewURL}}

All routes accept `Accept: text/llm`, or append `?view=llm` to the URL:
  /                     these messages; ?limit=N &offset=N to page (default 50)
  /?since=today         restrict by date; also &until=. Takes YYYY-MM-DD,
                        `today`, `yesterday`, or an offset like `-7d`, `-24h`.
                        Bounds are whole days: since is inclusive from midnight,
                        until exclusive at the following one.
  /?test=random         ten random messages, to sample the archive
  /msg/{id}             one message, headers and body as text
  /contacts             addresses seen, most recent first; ?limit= &offset=
  /contacts?show=hidden addresses previously hidden
  /contact/{addr}       the full conversation with one address
  /forge                forge notifications by repository
  /forge/{repo}         one repository, its threads newest first
  /drafts               mails being written, none of them sent
  POST /msg/{id}/reply  (application/x-www-form-urlencoded)
                        fields: body     optional, the reply's text
                                subject  optional, overrides the derived one
                        Composes a draft answering that message and sends
                        nothing; answers with the URL of the draft it made.
  POST /compose         (application/x-www-form-urlencoded)
                        fields: to, cc  optional, repeatable, the addresses
                                subject optional
                                body    optional, the mail's text
                        Composes a draft that answers nothing and sends
                        nothing; answers with the URL of the draft it made.
                        This is how a mail to somebody not already in a thread
                        is written; a reply can only reach a thread's own
                        addresses.