Comment puis-je envoyer une pièce jointe par e-mail à partir de la ligne de commande

24

Est-il possible d'envoyer des pièces jointes depuis la ligne de commande?

Si possible, j'aimerais quelque chose d'aussi simple que:

mail -a myfile.txt -t [email protected] -s "Here's my file"
    
posée conorgriffin 10.10.2010 - 02:38
la source

6 réponses

18

De tous les agents utilisateurs de messagerie du référentiel Ubuntu, il semble que mutt est la ligne de commande MUA dotée d'un support à long terme.

Selon le manuel , vous pouvez faire quelque chose comme:

mutt -a myfile.txt -s "Here's my file" -- [email protected]

sauf qu'il ne va nulle part, car il faut également un agent de transfert de courrier. Les plus populaires sont:

  • le vénérable sendmail
  • postfix
  • exim4
  • qmail
  • nullmailer

et les seuls que Canonical semble prendre en charge sont postfix (merci pour la correction Steve) et exim4 .

On pourrait aussi dire que xdg-email est également un MUA Ubuntu correct, mais il s'agit d'un avant-gardiste. end qui n'exécute que votre MUA préféré en votre nom.

Si vous souhaitez des conseils sur les MTA qui pourraient convenir à votre utilisation, ouvrez peut-être une autre question ici.

    
réponse donnée msw 10.10.2010 - 04:16
la source
11

J'ai aussi eu des problèmes avec l'envoi de fichiers de pièces jointes. Lorsque j'ai envoyé un courrier électronique sans pièce jointe, cela a été un succès, mais pas avec la pièce jointe. Ce problème existait avec les commandes sendemail , mutt , mail , mailx , uuencode .

Heureusement, il a été résolu de façon amusante. J'utilise Gmail pour envoyer des emails. Vous pouvez configurer votre gmail pour l'envoi d'emails via des commandes dans le terminal, comme déclaré à lien .

Vous pouvez envoyer un e-mail avec:

mail -s "hello" [email protected] < /home/masoud/YOURFILE.txt 

mais vous ne pouvez pas envoyer le même fichier que la pièce jointe ci-dessous:

mail -s "hello" [email protected] -a /home/masoud/YOURFILE.txt

ou:

mail -s "hello" -a /home/masoud/YOURFILE.txt [email protected]

Enfin, j'ai compris que seul ce format pouvait envoyer une pièce jointe:

echo "your message here" | mail -s "title" -a /home/masoud/YOURFILE.txt [email protected]

Curieusement, la différence réside dans l’existence de la commande "echo".

Mise à jour: 201808

Il semble que l’option -a ait été modifiée avec Uppercase -A pour la pièce jointe maintenant. Le -a semble être pour changer d'en-tête selon doc

    
réponse donnée Masoud 06.02.2014 - 11:11
la source
6

J'ai trouvé que la commande et les paramètres avaient été modifiés récemment.

Si vous souhaitez envoyer vos pièces jointes avec cette commande:

mail -s "your subject" [email protected] -A /your/attachment/absolute/path < /home/you/message.txt

L'option attachment doit être -A , ce qui correspond à CAPITAL A .

    
réponse donnée Alex 01.02.2015 - 14:02
la source
3

Vous pouvez envoyer un fichier à partir du shell , mais sinon utilisez Thunderbird .

Dans ce cas, essayez thunderbird -remote ... est utile - en supposant que thunderbird fonctionne habituellement:

La commande ouvre une fenêtre de composition de courrier d’une instance thunderbird en cours d’exécution.
L'adresse "De" est votre adresse par défaut configurée dans thunderbird.
En outre, les paramètres de compte existants sont utilisés, aucune configuration distincte n’est nécessaire.

Pour un mail adressé à [email protected] , avec le sujet "S", le corps "B" et une pièce jointe /some/absolute/file.txt , la commande est

thunderbird -remote "xfeDoCommand(composeMessage,subject='S',to='[email protected]',body='B',attachment='/some/absolute/file.txt')"

Il y a deux problèmes:

Le fichier joint doit être fourni par un chemin absolu , ce qui est fastidieux dans la pratique. Cela peut être géré en utilisant readlink -f pour résoudre les chemins relatifs:

thunderbird -remote "xfeDoCommand(composeMessage,subject='S',to='[email protected]',body='B',attachment='$(readlink -f file.txt)')"

En outre, la commande est longue. Utilisez un script shell ou une fonction shell, avec quatre arguments:

thunderbird-compose () {
    thunderbird -remote "xfeDoCommand(composeMessage,subject='',to='',body='',attachment='$(readlink -f )')"
}

Avec cette fonction, la commande devient lisible:

thunderbird-compose 'Some Subject' [email protected] 'Body of message' file1

ouvrira une fenêtre "Write" avec la pièce jointe et le texte de From, To, Subject et du corps du Thunderbird.

    
réponse donnée Volker Siegel 26.09.2014 - 03:26
la source
1

heirloom-mailx package dans debian fournit la commande mailx pour envoyer facilement des pièces jointes de mime. travaux suivants pour moi;

 mailx -a attachment.zip -s subject [email protected]
    
réponse donnée Furkan Mustafa 02.04.2015 - 06:30
la source
0

Je souhaite ajouter une autre réponse qui est utilisée pour ajouter du corps de texte avec la pièce jointe. Cheers !!

echo "This is the message body" | mutt -a "/path/to/file.to.attach" -s "subject of message" -- [email protected]
    
réponse donnée Anandu M Das 25.09.2014 - 12:30
la source

Lire d'autres questions sur les étiquettes