GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie sende ich eine HTML-E-Mail mit dem Linux-Befehl „mail“?

mail -s "subject" [email protected] <test.html
funktioniert, aber nur für reine Text-E-Mails.

Was ist der richtige Weg zum Senden von HTML-E-Mails mit dem Linux-Befehl mail ?

Akzeptierte Antwort:

Es gibt viele verschiedene Versionen von mail zirka. Wenn Sie über mail -s subject [email protected] [email protected] <body hinausgehen (Für das Senden sind das alles POSIX-Garantien – und sogar -s gab es früher nicht), haben sie in der Regel unterschiedliche Befehlszeilenoptionen. Das Hinzufügen einer zusätzlichen Kopfzeile ist nicht immer einfach.

  • Mit etwas mailx Implementierungen, z. von mailutils auf Ubuntu oder Debians bsd-mailx , es ist einfach, denn dafür gibt es eine Option.

    mailx -a 'Content-Type: text/html' -s "Subject" [email protected] <test.html
    
  • Mit dem Erbstück mailx , es gibt keinen bequemen Weg. Eine Möglichkeit, beliebige Header einzufügen, ist das Setzen von editheaders=1 und verwenden Sie einen externen Editor (der ein Skript sein kann).

    ## 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"
    
  • Mit einem allgemeinen POSIX mailx , ich weiß nicht, wie ich an Überschriften komme.

Wenn Sie mail verwenden möchten oder mailx , denken Sie daran

  • Dies ist nicht einmal innerhalb einer bestimmten Linux-Distribution portierbar. Zum Beispiel haben sowohl Ubuntu als auch Debian mehrere Alternativen für mail und mailx .
  • Beim Verfassen einer Nachricht mail und mailx behandelt Zeilen, die mit ~ beginnen als Befehle. Wenn Sie Text in mail leiten , müssen Sie dafür sorgen, dass dieser Text keine Zeilen enthält, die mit ~ beginnen .

Wenn Sie sowieso Software installieren, können Sie genauso gut etwas vorhersehbareres als mail installieren /Mail /mailx . Mutti zum Beispiel. Mit Mutt können Sie die meisten Header in der Eingabe mit dem -H versorgen Option, aber nicht Content-Type , die über eine Mutt-Option gesetzt werden muss.

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

Oder Sie können sendmail aufrufen direkt. Es gibt mehrere Versionen von sendmail da draußen, aber alle unterstützen sendmail -t auf einfachste Weise eine Mail versenden, indem Sie die Empfängerliste aus der Mail auslesen. (Ich denke, sie unterstützen nicht alle Bcc: .) Auf den meisten Systemen sendmail befindet sich nicht im üblichen $PATH , es befindet sich in /usr/sbin oder /usr/lib .

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

EOF

Linux
  1. Senden Sie eine E-Mail vom Linux-Terminal oder Skript mit dem Befehl mail

  2. Wie sende ich E-Mails über einen externen SMTP-Server mit dem Befehl mailx in Linux?

  3. So starten Sie Linux über die Befehlszeile neu

  4. So senden Sie E-Mails an einen externen Benutzer mit Mailx unter Linux

  5. Wie hängt man eine Datei mit dem Mail-Befehl unter Linux an?

So verwenden Sie Ansible zum Senden einer E-Mail mit Google Mail

So führen Sie einen Befehl regelmäßig unter Linux mit Watch aus

mailx-Befehl unter Linux – Internet-Mail senden und empfangen

So senden Sie E-Mails lokal über die Eingabeaufforderung

Senden Sie E-Mail in Linux von der Befehlszeile aus

Wie füge ich mit dem Linux-Mail-Befehl eine neue Zeile in die E-Mail ein?