1

我需要通过 mutt 客户端从 unix 发送邮件。我尝试使用 html 正文发送邮件:

mutt -e "my_hdr Content-Type: text/html" $userEmail -s "工作流 - 舞台上的查询执行:$STGUPPER" < $htmlResultFile

作品。

尝试发送带有 html 附件的邮件:

mutt -e "my_hdr Content-Type: text/html" -a $htmlResultFile -s "attachment" $userEmail

作品!

但是当我尝试发送带有 html body 和 html attachemnt 的邮件时,我无法做到这一点..

mutt -e "set Content-Type: text/html" $userEmail -a $htmlResultFile -s "attachment" < $htmlResultFile

我将 html 作为附件,但正文为纯文本。

4

2 回答 2

2

我怀疑你必须自己制作身体。请注意,混合体的 content_type 是multipart/alternative

我发现这个问题很有趣。这是我的看法:

#!/bin/sh
# using mutt, send a mixed multipart text and html message:

usage() {
    echo "error: $1"
    echo "usage: $(basename $0) -t textfile -h htmlfile -s subject -r recipient"
    exit 1
}

textfile=""
htmlfile=""
subject=""
recipient=""

while getopts "t:h:s:r:" opt; do
    case $opt in
        t) textfile="$OPTARG" ;;
        h) htmlfile="$OPTARG" ;;
        s) subject="$OPTARG" ;;
        r) recipient="$OPTARG" ;;
        ?) usage "invalid option: -$OPTARG" ;;
    esac
done
shift $((OPTIND-1))

[ -z "$textfile" ] && usage "no textfile specified"
[ -z "$htmlfile" ] && usage "no htmlfile specified"
[ -z "$recipient" ] && usage "no recipient specified"
[ ! -f "$textfile" ] && usage "no such file: $textfile"
[ ! -f "$htmlfile" ] && usage "no such file: $htmlfile"

boundary=$(openssl rand -hex 24)
content_type="Content-type: multipart/alternative; boundary=$boundary"

##
body=$(cat - << END

--$boundary
Content-Type: text/plain; charset=ISO-8859-1

$(cat "$textfile")

--$boundary
Content-Type: text/html; charset=ISO-8859-1

$(cat "$htmlfile")

--$boundary
END
)
##

echo "$body" | mutt -e "myhdr $content_type" -s "$subject" "$recipient"
于 2013-07-02T18:38:33.853 回答
0

我无法在 mutt 中发送组合的纯文本和 HTML。所以我最终手工制作了电子邮件并通过管道发送到sendmail -t.

示例:https ://github.com/kaihendry/sg-hackandtell/blob/master/list/maillist

这应该比仅仅发送 HTML 电子邮件提供更好的结果。

于 2014-02-07T06:55:47.260 回答