mail -s "subject" [email protected] <test.html
działa, ale tylko w przypadku zwykłego e-maila.
Jaki jest prawidłowy sposób wysyłania wiadomości e-mail w formacie HTML za pomocą polecenia systemu Linux mail
?
źródło
mail -s "subject" [email protected] <test.html
działa, ale tylko w przypadku zwykłego e-maila.
Jaki jest prawidłowy sposób wysyłania wiadomości e-mail w formacie HTML za pomocą polecenia systemu Linux mail
?
Istnieje wiele różnych wersji mail
. Kiedy wychodzisz poza mail -s subject to1@address1 to2@address2 <body
(do wysyłania, to wszystko gwarancje POSIX - a nawet -s
nie istniały w dawnych czasach ), mają one zwykle różne opcje wiersza poleceń. Dodanie dodatkowego nagłówka nie zawsze jest łatwe.
Z niektórymi mailx
implementacjami, np. Z mailutils
Ubuntu lub Debianabsd-mailx
, jest to łatwe, ponieważ jest na to opcja.
mailx -a 'Content-Type: text/html' -s "Subject" to@address <test.html
W Heirloom mailx
nie ma wygodnego sposobu. Jedną z możliwości wstawienia dowolnych nagłówków jest ustawienie editheaders=1
zewnętrznego edytora (który może być skryptem) i korzystanie z niego.
## 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" to@address <<EOF
~e
.
EOF
rm -f "$temp_script"
Z ogólnym POSIX-emmailx
nie wiem, jak uzyskać nagłówki.
Jeśli zamierzasz użyć dowolnego mail
lub mailx
, pamiętaj o tym
mail
i mailx
.mail
i mailx
traktuje linie zaczynające się ~
jako polecenia. Jeśli wstawiasz tekst do potoku mail
, musisz tak ustawić, aby ten tekst nie zawierał linii zaczynających się od ~
.Jeśli i tak zamierzasz zainstalować oprogramowanie, równie dobrze możesz zainstalować coś bardziej przewidywalnego niż mail
/ Mail
/ mailx
. Na przykład mutt . Dzięki Mutt możesz dostarczyć większość nagłówków na wejściu z -H
opcją, ale nieContent-Type
, którą należy ustawić za pomocą opcji mutt.
mutt -e 'set content_type=text/html' -s 'hello' 'to@address' <test.html
Lub możesz wywołać sendmail
bezpośrednio. Istnieje kilka wersji sendmail
, ale wszystkie obsługują sendmail -t
wysyłanie wiadomości w najprostszy sposób, czytając listę adresatów z wiadomości. (Myślę, że nie wszystkie obsługują Bcc:
.) W większości systemów sendmail
nie ma go w zwykłym systemie $PATH
, jest w /usr/sbin
lub /usr/lib
.
cat <<'EOF' - test.html | /usr/sbin/sendmail -t
To: to@address
Subject: hello
Content-Type: text/html
EOF
źródło
mail
.Dzięki Heirloom mailx wygodny sposób to
Dzięki, koleś
przetestował Fedorę 17 i działał
źródło
Content-Type
Aby to się stało, musisz dodać nagłówek do wiadomości e-mail.będzie działać
źródło
mailx
? To może mieć opcję. Jeśli to nie zadziała. Jeśli to nie zadziała, możesz rozważyć użycie mutta, chociaż nie wiem od razu, jakie przełączniki linii poleceń to robią.Dzięki heirloom-mailx możesz zmienić program sendmail na swój skrypt przechwytujący, zamienić tam nagłówki, a następnie użyć sendmaila.
Skrypt, którego używam (
~/bin/sendmail-mailx-hook
):Ten skrypt zmienia wartości w nagłówku wiadomości w następujący sposób:
Content-Type:
dotext/html; charset=utf-8
Content-Transfer-Encoding:
do8bit
(nie jestem pewien, czy jest to naprawdę potrzebne).Aby wysłać wiadomość e-mail w formacie HTML:
Ta metoda jest bardziej skuteczna niż zaproponowana przez @Gilles, ponieważ nie tworzy plików tymczasowych, a jedynie naprawia strumień w locie.
źródło
Użyłem poniższych skryptów
źródło
Dla mnie musiałem podać zmienną taką jak serwer SMTP, więc polecenie mail działało w następujący sposób. Przeszukałem wiele postów i znalazłem poniżej właściwości do konwersji treści na tekst / HTML. Teraz e-mail, który otrzymuję, jest w formacie HTML.
Wersja uniksowa: Red Hat Enterprise Linux Server wydanie 6.6 (Santiago)
Pierwszy. Utwórz w skrypcie dowolne informacje (testSql.sh)
Druga. Prześlij ten skrypt do polecenia mail
W ten sposób otrzymuję następujące informacje w wiadomości e-mail:
Wartość1 i Wartość2 zgodnie z tagowaniem HTML wykonanym w pliku testSql.sh
źródło
źródło