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"
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:
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.
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".
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
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
.
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.
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]
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]