GNU/Linux >> Linux Esercitazione >  >> Linux

Come inviare e-mail HTML utilizzando il comando "posta" di Linux?

mail -s "subject" [email protected] <test.html
funziona, ma solo per e-mail di testo normale.

Qual è il modo corretto per inviare e-mail HTML utilizzando il comando Linux mail ?

Risposta accettata:

Esistono molte versioni differenti di mail intorno a. Quando vai oltre mail -s subject [email protected] [email protected] <body (per l'invio, sono tutte garanzie POSIX e persino -s non esisteva ai vecchi tempi), tendono ad avere diverse opzioni della riga di comando. Aggiungere un'intestazione aggiuntiva non è sempre facile.

  • Con alcuni mailx implementazioni, ad es. da mailutils su bsd-mailx di Ubuntu o Debian , è facile, perché c'è un'opzione per questo.

    mailx -a 'Content-Type: text/html' -s "Subject" [email protected] <test.html
    
  • Con Heirloom mailx , non esiste un modo conveniente. Una possibilità per inserire intestazioni arbitrarie è impostare editheaders=1 e usa un editor esterno (che può essere uno script).

    ## 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"
    
  • Con un POSIX mailx generale , non so come arrivare alle intestazioni.

Se hai intenzione di utilizzare qualsiasi mail o mailx , tieni presente che

  • Questo non è portabile nemmeno all'interno di una determinata distribuzione Linux. Ad esempio, sia Ubuntu che Debian hanno diverse alternative per mail e mailx .
  • Durante la composizione di un messaggio, mail e mailx tratta le righe che iniziano con ~ come comandi. Se inserisci il testo in mail , devi fare in modo che questo testo non contenga righe che iniziano con ~ .

Se hai comunque intenzione di installare il software, potresti anche installare qualcosa di più prevedibile di mail /Mail /mailx . Ad esempio, bastardino. Con Mutt, puoi fornire la maggior parte delle intestazioni nell'input con -H opzione, ma non Content-Type , che deve essere impostato tramite un'opzione mutt.

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

Oppure puoi invocare sendmail direttamente. Esistono diverse versioni di sendmail là fuori, ma supportano tutti sendmail -t per inviare una mail nel modo più semplice, leggendo l'elenco dei destinatari dalla posta. (Penso che non tutti supportino Bcc: .) Sulla maggior parte dei sistemi, sendmail non è nel solito $PATH , è in /usr/sbin o /usr/lib .

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

EOF

Linux
  1. Invia e-mail dal terminale linux o dallo script usando il comando mail

  2. Come inviare posta tramite server SMTP esterno utilizzando il comando mailx in Linux?

  3. Come uccidere un processo su Linux usando il comando?

  4. Linux / UNIX:Come inviare e-mail con allegati utilizzando il comando mailx

  5. Come faccio a inviare e-mail dalla riga di comando?

Come utilizzare Ansible per inviare un'e-mail utilizzando Gmail

Come eseguire periodicamente un comando in Linux usando Watch

comando mailx in linux – invia e ricevi posta Internet

Come inviare e-mail in locale utilizzando il prompt dei comandi

Invia e-mail in Linux dalla riga di comando

Come inserire una nuova riga nell'e-mail usando il comando linux mail?