GNU/Linux >> Znalost Linux >  >> Linux

Jak odeslat e-mail HTML pomocí příkazu Linux „mail“?

mail -s "subject" [email protected] <test.html
funguje, ale pouze pro e-maily ve formátu prostého textu.

Jaký je správný způsob odesílání HTML e-mailu pomocí linuxového příkazu mail ?

Přijatá odpověď:

Existuje mnoho různých verzí mail kolem. Když překročíte mail -s subject [email protected] [email protected] <body (pro odesílání, to jsou všechny záruky POSIX – a dokonce -s za starých časů neexistovaly), mívají různé možnosti příkazového řádku. Přidání dalšího záhlaví není vždy snadné.

  • S nějakým mailx implementace, např. z mailutils na Ubuntu nebo Debianu bsd-mailx , je to snadné, protože na to existuje možnost.

    mailx -a 'Content-Type: text/html' -s "Subject" [email protected] <test.html
    
  • S Heirloom mailx , neexistuje žádný pohodlný způsob. Jednou z možností vložení libovolných záhlaví je nastavení editheaders=1 a použijte externí editor (kterým může být skript).

    ## Prepare a temporary script that will serve as an editor.
    ## This script will be passed to ed.
    temp_script=$(mktemp)
    cat <<'EOF' >>"$temp_script"
    1a
    Content-Type: text/html
    .
    $r test.html
    w
    q
    EOF
    ## Call mailx, and tell it to invoke the editor script
    EDITOR="ed -s $temp_script" heirloom-mailx -S editheaders=1 -s "Subject" [email protected] <<EOF
    ~e
    .
    EOF
    rm -f "$temp_script"
    
  • S obecným POSIX mailx , nevím, jak se dostat do záhlaví.

Pokud budete používat jakoukoli mail nebo mailx , mějte na paměti, že

  • Toto není přenosné ani v rámci dané distribuce Linuxu. Například Ubuntu i Debian mají několik alternativ pro mail a mailx .
  • Při psaní zprávy mail a mailx zpracovává řádky začínající ~ jako příkazy. Pokud vložíte text do mail , musíte zajistit, aby tento text neobsahoval řádky začínající ~ .

Pokud se přesto chystáte instalovat software, můžete také nainstalovat něco předvídatelnějšího než mail /Mail /mailx . Například mutt. S Mutt můžete většinu záhlaví na vstupu dodat s -H možnost, ale ne Content-Type , kterou je třeba nastavit pomocí možnosti mutt.

mutt -e 'set content_type=text/html' -s 'hello' '[email protected]' <test.html

Nebo můžete vyvolat sendmail přímo. Existuje několik verzí sendmail tam venku, ale všechny podporují sendmail -t odeslat e-mail tím nejjednodušším způsobem, přečtením seznamu příjemců z e-mailu. (Myslím, že ne všechny podporují Bcc: .) Na většině systémů sendmail není v obvyklé $PATH , je v /usr/sbin nebo /usr/lib .

cat <<'EOF' - test.html | /usr/sbin/sendmail -t
To: [email protected]
Subject: hello
Content-Type: text/html

EOF

Linux
  1. Odešlete e-mail z linuxového terminálu nebo skriptu pomocí příkazu mail

  2. Jak odesílat poštu přes externí server SMTP pomocí příkazu mailx v Linuxu?

  3. Jak restartovat Linux pomocí příkazového řádku

  1. Odesílejte poštu z příkazového řádku s externím serverem smtp v systému Linux

  2. 9 příkladů příkazů mail/mailx pro odesílání e-mailů z příkazového řádku v systému Linux

  3. Linux / UNIX :Jak posílat e-maily s přílohami pomocí příkazu mailx

  1. Jak zabít proces v Linuxu pomocí příkazu?

  2. Jak odesílat e-maily externímu uživateli pomocí Mailx v systému Linux

  3. Jak mohu odeslat e-mail z příkazového řádku?