61 votes

Comment joindre un fichier à l'aide de la commande de messagerie sous Linux?

Je suis sur un serveur qui exécute un shell Linux. J'ai besoin d'envoyer un simple fichier à un destinataire. Comment faire pour ce faire, prefereably en utilisant uniquement le mail de commande?

Mise à JOUR: vous avez une bonne solution, à l'aide de mutt à la place:

$ echo | mutt -a syslogs.tar.gz admin@domain.org

52voto

Jon Points 23749

Exemple d'utilisation de uuencode:

uuencode surfing.jpeg surfing.jpeg | mail sylvia@home.com

et la référence de l'article:

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

22voto

Seiti Points 1013
$ echo | mutt -a syslogs.tar.gz admin@domain.org

Mais il utilise mutt, pas de mail (ou mailx).

13voto

David Winslow Points 5224

mailx peut aider ainsi. À partir de la mailx homme page:

-a file
     Attach the given file to the message.

Assez facile, droit?

12voto

njsf Points 1896

Ma réponse besoins en base64 en plus de mail, mais certains uuencode versions pouvez aussi le faire en base64 avec-m, ou vous pouvez oublier le mime et l'utilisation de la plaine uuencode de sortie...

   FROM=me@mydomain.com
   TO=someone@mydomain.com
   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

7voto

autonymous Points 71

mailx -a /path/to/file email@address

Vous pourriez aller en mode interactif (il vous invite avec "Sujet:" et puis une ligne vide), entrez un objet, puis saisissez un corps et appuyez sur ctrl+d (EOT) à la fin.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X