Wie kann ich eine E-Mail über den UNIX-Befehl mailx senden?

90

Wie kann ich eine E-Mail über den UNIX- mailxBefehl senden ?

user269484
quelle

Antworten:

107

ein Beispiel

$ echo "something" | mailx -s "subject" [email protected]

Anhang senden

$ uuencode file file | mailx -s "subject" [email protected]

und um Anhang zu senden UND den Nachrichtentext zu schreiben

$ (echo "something\n" ; uuencode file file) | mailx -s "subject" [email protected]
Ghostdog74
quelle
4
Ich habe es versucht, aber es gibt keine Antwort. Weder gibt es eine Fehlermeldung noch sendet die Mail an [email protected]. Ist eine Serverkonfiguration erforderlich?
user269484
2
Es ist keine Konfiguration erforderlich. Prüfe deine Internetverbindung. Ich habe eine direkte Verbindung zum Internet über Kabel, ich verwende keine Proxys oder ähnliches, so dass es auf meiner Seite funktioniert.
Ghostdog74
2
Sie sollten auch in Ihrem Posteingang nach Fehlermeldungen suchen. Dh renn mail.
Hafichuk
2
Beachten Sie jedoch, dass dies uuencodeeine Legacy-Technologie aus einem vergangenen Jahrtausend ist, die nicht das produziert, was wir heute unter "Anhängen" verstehen. Grundsätzlich wird am Ende des Nachrichtentextes ein maschinenlesbares Durcheinander eingefügt. In der heutigen Zeit werden Sie besser von einem ordnungsgemäß MIME-fähigen Mailer bedient. Leider gibt es keinen allgemein unterstützten mailxErsatz durch MIME-Funktionen, aber wenn ja mutt, ist dies wahrscheinlich der Weg des geringsten Widerstands.
Tripleee
5
@ user269484 Google Mail akzeptiert keine E-Mails von nicht autorisierten IP-Adressen. Lesen Sie support.google.com/mail/answer/10336
Manas Jayanth
33

Hier sind Sie ja :

echo "Body" | mailx -r "FROM_EMAIL" -s "SUBJECT" "To_EMAIL"

PS. Körper und Thema sollten in doppelten Anführungszeichen gehalten werden. Entfernen Sie Anführungszeichen aus FROM_EMAILund To_EMAILbeim Ersetzen von E-Mail-Adressen.

Kamran Ahmad
quelle
1
Unter Mac erhalten Sie eine Fehlermeldung vom Befehl mailx, wenn Sie die Option -r mailx: unzulässig verwenden. - r Verwendung: mailx [-EiInv] [-s Betreff] [-c cc-addr] [-b bcc-addr] [ -F] to-addr ... mailx [-EHiInNv] [-F] -f [Name] mailx [-EHiInNv] [-F] [-u Benutzer] mailx -e [-f Name] mailx -H
jcpennypincher
Sie könnten tun -S [email protected]
Kalpesh Soni
6
mailx -s "subjec_of_mail" [email protected] < file_name

Über das mailxDienstprogramm können wir eine Datei von unixnach senden mail server. Hier im obigen Code sehen wir, dass der erste Parameter -s "subject of mail" der zweite Parameter ist mail IDund der letzte Parameter der Name der Datei ist, die wir anhängen möchten

Girdhar Singh Rathore
quelle
1
Dadurch wird die Datei nicht angehängt, sondern der Inhalt der Datei wird in den
Guus
5
mail [-s subject] [-c ccaddress] [-b bccaddress] toaddress

-c und -b sind optional.

-s: Geben Sie den Betreff an. Wenn der Betreff Leerzeichen enthält, verwenden Sie Anführungszeichen.

-c: Durchschicken von Kopien an die durch Komma getrennte Liste der Benutzer.

-b: Senden Sie blinde Kopien an die durch Komma getrennte Liste der Benutzer.

Hoffe, meine Antwort klärt Ihren Zweifel.

Pavan Kumar
quelle
5

Mit dem Befehl MUTT ist es schneller

echo "Body Of the Email"  | mutt -a "File_Attachment.csv" -s "Daily Report for $(date)"  -c [email protected] [email protected] -y
  1. -c E-Mail-CC-Liste
  2. -s Themenliste
  3. -y, um die Mail zu senden
user1651561
quelle
4

Von der Manpage:

Nachrichten senden

Um eine Nachricht an eine oder mehrere Personen zu senden, kann mailx mit Argumenten aufgerufen werden, bei denen es sich um die Namen der Personen handelt, an die die E-Mail gesendet wird. Vom Benutzer wird dann erwartet, dass er seine Nachricht eingibt, gefolgt von einem 'Steuer-D' am Anfang einer Zeile.

Mit anderen Worten, mailx liest den zu sendenden Inhalt von der Standardeingabe und kann wie gewohnt umgeleitet werden. Z.B:

ls -l $HOME | mailx -s "The content of my home directory" [email protected]
hlovdal
quelle
3
echo "Sending emails ..."
NOW=$(date +"%F %H:%M")
echo $NOW  " Running service" >> open_files.log
header=`echo "Service Restarting: " $NOW`


mail -s "$header" [email protected],   \
              [email protected], \ < open_files.log
Piyush Mattoo
quelle
1

Anpassen der FROM-Adresse

MESSAGE="SOME MESSAGE"
SUBJECT="SOME SUBJECT"
TOADDR="[email protected]"
FROM="DONOTREPLY"

echo $MESSAGE | mail  -s "$SUBJECT" $TOADDR  -- -f $FROM
Hari
quelle
Eine Ausnahme von man mail: -f [Datei] Liest den Inhalt der mbox des Benutzers (oder der angegebenen Datei) zur Verarbeitung ein; Wenn mailx beendet wird, werden nicht gelöschte Nachrichten in diese Datei zurückgeschrieben. Die Zeichenfolgendatei wird wie im folgenden Ordnerbefehl beschrieben behandelt.
ZJ Lyu
Dies hängt davon ab, welche Version Sie verwenden. Es gibt mehrere inkompatible Konkurrenten mailund mailxBefehle mit unterschiedlichen Optionen.
Tripleee
1

Hier ist eine multifunktionale Funktion zum Versenden von E-Mails mit mehreren Anhängen:

enviaremail() {
values=$(echo "$@" | tr -d '\n')
listargs=()
listargs+=($values)
heirloom-mailx $( attachment=""
for (( a = 5; a < ${#listargs[@]}; a++ )); do
attachment=$(echo "-a ${listargs[a]} ")
echo "${attachment}"
done) -v -s "${titulo}" \
-S smtp-use-starttls \
-S ssl-verify=ignore \
-S smtp-auth=login \
-S smtp=smtp://$1 \
-S from="${2}" \
-S smtp-auth-user=$3 \
-S smtp-auth-password=$4 \
-S ssl-verify=ignore \
$5 < ${cuerpo}
}

Funktionsaufruf: enviaremail "smtp.mailserver: port" "from_address" "authuser" "'pass'" "destination" "Liste der durch Leerzeichen getrennten Anhänge"

Hinweis: Entfernen Sie die doppelten Anführungszeichen im Aufruf

Denken Sie außerdem daran, das $ titulo (Betreff) und $ cuerpo (Text) der E-Mail extern zu definieren, bevor Sie die Funktion verwenden

Ivo Yordanov
quelle
0

Wenn Sie mehr als zwei Personen oder DL senden möchten:

echo "Message Body" | mailx -s "Message Title" -r [email protected] [email protected],[email protected]

Hier:

  • -s = Betreff oder Mail-Titel
  • -r = Absenderpost oder DL
Dildeepak
quelle
Können Sie bitte erklären, warum Echo verwendet wird, um einen Nachrichtentext zu übergeben? Wenn ich dies weglasse und von MailX ausführe, blinkt der Cursor, als würde er auf eine Eingabe warten.
LonelyRogue