web-dev-qa-db-fra.com

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

Est-il possible d'envoyer des pièces jointes par courrier électronique à partir de 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"
25
conorgriffin

Parmi tous les agents utilisateurs de messagerie du référentiel Ubuntu, il apparaît que mutt est le MUA en ligne de commande doté du support à long terme.

Selon le manuel , vous pouvez faire quelque chose exactement comme:

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

sauf que cela n'ira nulle part car on a également besoin d'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 supporter sont postfix (merci pour la correction Steve) et exim4 .

On pourrait aussi dire que xdg-email est aussi un MUA Ubuntu approprié, mais c’est un front-end sans système qui n'exécute que votre MUA préférée en votre nom.

Si vous souhaitez des conseils sur le type de MTA qui pourrait vous convenir, ouvrez peut-être une autre question ici.

18
msw

J'ai eu de gros problèmes avec l'envoi de fichiers joints. Lorsque j'ai envoyé un e-mail sans pièce jointe, l'opération a abouti, mais pas avec la pièce jointe. Ce problème existait déjà avec les commandes sendemail, mutt, mail, mailx, uuencode.

Heureusement, cela a été résolu drôlement. J'utilise Gmail pour l'envoi d'e-mails. Vous pouvez configurer votre gmail pour l'envoi d'e-mails via des commandes dans le terminal, comme indiqué à l'adresse http://www.linuxandlife.com/2013/01/send-email-from-linux-terminal.html .

Vous pouvez envoyer un email texte en utilisant:

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

mais vous ne pouvez pas envoyer le même fichier en pièce jointe comme 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]

Bizarrement, 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 Majuscule -A pour l'attachement maintenant. Le -a semble être pour changer l'en-tête selon doc

11
Masoud

J'ai trouvé que la commande et les paramètres ont é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, qui est CAPITAL A.

6
Alex

Vous voudrez peut-être envoyer un fichier à partir du shell, mais sinon tilisez Thunderbird.

Dans ce cas, essayez Thunderbird -remote ... est utile - en supposant que Thunderbird est généralement en cours d'exécution:

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.
De plus, les paramètres du compte existants sont utilisés, aucune configuration distincte n’est nécessaire.

Pour un courrier 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 donné par un chemin absol, ce qui est fastidieux en pratique. Cela peut être manipulé 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 trop longue. Utilisez un script Shell ou une fonction Shell, avec quatre arguments:

Thunderbird-compose () {
    Thunderbird -remote "xfeDoCommand(composeMessage,subject='$1',to='$2',body='$3',attachment='$(readlink -f $4)')"
}

Avec cette fonction, la commande devient lisible:

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

ouvrira une Thunderbird "Write" fenêtre avec la pièce jointe, et de, à, sujet, et le corps du texte remplis. Il peut être édité avant de l'envoyer.

3
Volker Siegel

Le paquet heirloom-mailx dans debian fournit la commande mailx pour envoyer facilement les pièces jointes mime. suivre des œuvres pour moi;

 mailx -a attachment.Zip -s subject [email protected]
2
Furkan Mustafa

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

echo "This is the message body" | mutt -a "/path/to/file.to.attach" -s "subject of message" -- [email protected]
0
Anandu M Das