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


Antworten:


107

ein Beispiel

$ echo "something" | mailx -s "subject" recipient@somewhere.com

Anhang senden

$ uuencode file file | mailx -s "subject" recipient@somewhere.com

und um Anhang zu senden UND den Nachrichtentext zu schreiben

$ (echo "something\n" ; uuencode file file) | mailx -s "subject" recipient@somewhere.com

4
Ich habe es versucht, aber es gibt keine Antwort. Weder gibt es eine Fehlermeldung noch sendet die Mail an myname@gmail.com. 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.


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 von=a@b.com
Kalpesh Soni

6
mailx -s "subjec_of_mail" abc@domail.com < 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


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.


5

Mit dem Befehl MUTT ist es schneller

echo "Body Of the Email"  | mutt -a "File_Attachment.csv" -s "Daily Report for $(date)"  -c cc_mail@g.com to_mail@g.com -y
  1. -c E-Mail-CC-Liste
  2. -s Themenliste
  3. -y, um die Mail zu senden

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" someone@email.adr

3
echo "Sending emails ..."
NOW=$(date +"%F %H:%M")
echo $NOW  " Running service" >> open_files.log
header=`echo "Service Restarting: " $NOW`


mail -s "$header" abc.xyz@google.com,   \
              cde.mno@yahoo.com, \ < open_files.log

1

Anpassen der FROM-Adresse

MESSAGE="SOME MESSAGE"
SUBJECT="SOME SUBJECT"
TOADDR="u@u.com"
FROM="DONOTREPLY"

echo $MESSAGE | mail  -s "$SUBJECT" $TOADDR  -- -f $FROM

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


0

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

echo "Message Body" | mailx -s "Message Title" -r sender@someone.com receiver1@someone.com,receiver_dl@.com

Hier:

  • -s = Betreff oder Mail-Titel
  • -r = Absenderpost oder DL

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.