mrep: use Reply-From configuration to find From header

This allows replying from different addresses than Local-Mailbox
if they appear in To, Cc or Bcc.

Idea and initial patch by @nmeum.
pull/177/head
Leah Neukirchen 4 years ago
parent 3ea0c9c355
commit 282de65079

@ -54,6 +54,21 @@ If set,
.Xr mcom 1
will create draft messages in this maildir,
and save messages there after sending.
.It Li Reply-From\&:
A comma-separated list of mail addresses (formatted like this:
.Sq Li My Name <username@domain> )
that are automatically used for
the
.Li From\&:
header in a reply if present in the
.Li To\&: ,
.Li Cc\&: ,
or
.Li Bcc\&:
header.
If not set,
.Li Alternate\&-Mailboxes\&:
will be used as a default.
.It Li Scan\&-Format\&:
The default format string for
.Xr mscan 1 .

13
mcom

@ -15,6 +15,12 @@ notmine() {
grep -Fv -e "$mine"
}
replyfrom() {
addrs="$(maddr -a -h reply-from: "$MBLAZE/profile")"
[ -z "$addrs" ] && addrs="$(maddr -a -h alternate-mailboxes: "$MBLAZE/profile")"
grep -F -e "$addrs"
}
ouniq() {
awk '!seen[$0]++'
}
@ -358,8 +364,11 @@ fi
printf 'Subject: Re: %s\n' "$(COLUMNS=10000 mscan -f '%S' "$1")"
if ! printf '%s\n' "$hdrs" | awk '{ print }' |
mhdr -h from: /dev/stdin >/dev/null; then
from=$(mhdr -h local-mailbox "$MBLAZE/profile")
[ "$from" ] && printf 'From: %s\n' "$from"
addr=$(maddr -a -h to:cc:bcc: "$1" | replyfrom | head -n1)
[ -n "$addr" ] && from=$(maddr -h reply-from "$MBLAZE/profile" | grep -Fi "<$addr>" | head -n1)
[ -n "$addr" ] && [ -z "$from" ] && from=$(maddr -h alternate-mailboxes "$MBLAZE/profile" | grep -Fi "<$addr>" | head -n1)
[ -z "$from" ] && from=$(mhdr -h local-mailbox "$MBLAZE/profile")
[ -n "$from" ] && printf 'From: %s\n' "$from"
fi
mid=$(mhdr -h message-id "$1")
if [ "$mid" ]; then

Loading…
Cancel
Save