it-swarm.com.de

Wie kann ich eine Datei mit dem Befehl mail unter Linux anhängen?

Ich arbeite auf einem Server mit einer Linux-Shell. Ich muss eine einfache Datei an einen Empfänger senden. Wie mache ich das, vorzugsweise mit dem mail Befehl?

UPDATE : habe eine gute Lösung gefunden, benutze stattdessen mutt:

$ echo | mutt -a syslogs.tar.gz [email protected]
58
Seiti

Beispiel mit uuencode:

uuencode surfing.jpeg surfing.jpeg | mail [email protected]

und Referenzartikel:

http://www.shelldorado.com/articles/mailattachments.html

Hinweis:

du könntest apt install sharutils um den Befehl uuencode zu haben

48
Jon
$ echo | mutt -a syslogs.tar.gz [email protected]

Aber es wird mutt verwendet, nicht mail (oder mailx).

20
Seiti

mail auf jeder Version von modernem Linux, die ich ausprobiert habe, kann es tun. Keine Notwendigkeit für andere Software:

[email protected]:~$ mail -a doc.jpg [email protected]
Subject: testing

This is a test
EOT

strg + D, wenn Sie fertig sind.

20
matiu

mailx könnte auch helfen. Aus der mailx-Manpage:

-a file
     Attach the given file to the message.

Ziemlich einfach, oder?

12
David Winslow

Meine Antwort benötigt base64 zusätzlich zu mail, aber einige Uuencode-Versionen können auch base64 mit -m ausführen, oder Sie können MIME vergessen und die einfache Uuencode-Ausgabe verwenden ...

   [email protected]
   [email protected]
   SUBJECT="Auto emailed"
   MIME="application/x-gzip"  # Adjust this to the proper mime-type of file
   FILE=somefile.tar.gz
   ENCODING=base64  
   boundary="---my-unlikely-text-for-mime-boundary---$$--" 

   (cat <<EOF
    From: $FROM
    To: $REPORT_DEST
    Subject: $SUBJECT
    Date: $(date +"%a, %b %e %Y %T %z")
    Mime-Version: 1.0
    Content-Type: multipart/mixed; boundary="$boundary"
    Content-Disposition: inline

    --$boundary
    Content-Type: text/plain; charset=us-ascii
    Content-Disposition: inline

    This email has attached the file

    --$boundary
    Content-Type: $MIME;name="$FILE"
    Content-Disposition: attachment;filename="$FILE"
    Content-Transfer-Encoding: $ENCODING

    EOF
    base64 $FILE
    echo ""
    echo "--$boundary" ) | mail
11
njsf
mailx -a /path/to/file [email protected]

Sie können in den interaktiven Modus wechseln (es wird Sie mit "Betreff:" und einer leeren Zeile auffordern), einen Betreff eingeben, dann einen Text eingeben und drücken Ctrl+D (EOT) zum Beenden.

7
autonymous

mpack -a -s "Hey, könnte das als dein Bericht dienen?" -m 0 -c application/x-tar-gz survey_results.tar.gz [email protected]

mpack und munpack arbeiten mit metamail zusammen, um mailx zu erweitern und es für moderne E-Mails mit HTML-Markierungen und Anhängen nützlich zu machen.

Mit diesen vier Paketen können Sie alle E-Mails verarbeiten, die Sie in einem GUI-Mail-Client haben.

4
Hugh Esco

Mit Ubuntu 10.4 wird diese Mutt-Lösung geschrieben

echo | mutt -a myfile.Zip -- [email protected]

2
Antony Gibbs

Das Folgende ist eine anständige Lösung für alle Unix/Linux-Installationen, die keine ungewöhnlichen Programmfunktionen benötigt. Dies unterstützt einen mehrzeiligen Nachrichtentext, mehrere Anhänge und alle anderen typischen Funktionen von mailx.

Leider passt es nicht in eine einzelne Zeile.

#!/bin/ksh

# Get the date stamp for temporary files
DT_STAMP=`date +'%C%y%m%d%H%M%S'`

# Create a multi-line body
echo "here you put the message body
which can be split across multiple lines!
woohoo!
" > body-${DT_STAMP}.mail

# Add several attachments
uuencode File1.pdf File1.pdf >  attachments-${DT_STAMP}.mail
uuencode File2.pdf File2.pdf >> attachments-${DT_STAMP}.mail

# Put everything together and send it off!
cat body-${DT_STAMP}.mail attachments-${DT_STAMP}.mail > out-${DT_STAMP}.mail
mailx -s "here you put the message subject" [email protected] < out-${DT_STAMP}.mail

# Clean up temporary files
rm body-${DT_STAMP}.mail
rm attachments-${DT_STAMP}.mail
rm out-${DT_STAMP}.mail
1

Hier gibt es viele Antworten, die mutt oder mailx verwenden, oder Leute, die sagen, dass mail "-a" nicht unterstützt.

Erstens unterstützt Ubuntu 14.0.4 Mail von mailutils dies:

mail -A Dateiname -s "Betreff" [email protected]

Zweitens fand ich das, indem ich den Befehl "man mail" verwendete und nach "attach" suchte.

1
mbrandeis

Unter Linux würde ich vorschlagen,

# FILE_TO_BE_ATTACHED = abc.gz

uuencode abc.gz abc.gz > abc.gz.enc # This is optional, but good to have
                                    # to prevent binary file corruption.
                                    # also it make sure to get original 
                                    # file on other system, w/o worry of endianness

# Sending Mail, multiple attachments, and multiple receivers.
echo "Body Part of Mail" | mailx -s "Subject Line" -a attachment1 -a abc.gz.enc "[email protected] [email protected]"

Wenn Sie nach Erhalt des E-Mail-Anhangs den UUDE-Code verwendet haben, benötigen Sie diesen

uudecode abc.gz.enc

# Dies erzeugt eine Datei als Original mit demselben Namen wie das zweite Argument für uuencode.

0
prashant

Mit mailx können Sie:

mailx -s "My Subject"  -a ./mail_att.csv -S [email protected]  [email protected] < ./mail_body.txt

Dies funktionierte auf unseren GNU Linux Servern sehr gut, aber leider ist meine Entwicklungsumgebung Mac OsX, der nur eine beschissene alte BSD-Version von mailx enthält. Normalerweise benutze ich Coreutils, um bessere Versionen von Unix-Befehlen als die zu erhalten Mac BSD, aber mailx ist nicht in Coreutils.

Ich habe eine Lösung von notpeter in einem nicht verwandten Thread ( https://serverfault.com/questions/196001/using-unix-mail-mailx-with-a-modern-mail-server-imap-instead-of gefunden -mbox-files ) die das Heirloom mailx OSX-Binärpaket von http://www.tramm.li/iWiki/HeirloomNotes.html herunterladen sollten. Es hat ein besseres mailx, das die obige Befehlssyntax verarbeiten kann.

(Entschuldigung für schlechte Verlinkung oder Zuschreibung, ich bin neu auf der Website.)

0
yokeho