Est-il possible d'envoyer des pièces jointes par e-mail à partir de la ligne de commande?
Si possible, j'aimerais quelque chose d'aussi simple que:
mail -a myfile.txt -t me@example.com -s "Here's my file"
Est-il possible d'envoyer des pièces jointes par e-mail à partir de la ligne de commande?
Si possible, j'aimerais quelque chose d'aussi simple que:
mail -a myfile.txt -t me@example.com -s "Here's my file"
Réponses:
De tous les agents utilisateurs de messagerie dans le référentiel Ubuntu, il apparaît que mutt est le MUA de ligne de commande qui bénéficie du support à long terme.
Selon le manuel , vous pouvez faire quelque chose exactement comme:
mutt -a myfile.txt -s "Here's my file" -- me@example.com
sauf qu'il n'ira nulle part, car il faut également 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 également dire que xdg-email est également un MUA Ubuntu approprié, mais c'est un frontal simple qui n'exécute que votre MUA préféré en votre nom.
Si vous souhaitez des conseils sur le MTA qui pourrait convenir à votre utilisation, ouvrez peut-être une autre question ici.
mutt
commande a fonctionné comme annoncé. Soit dit en passant, nullmailer a un faux frontal sendmail, de sorte que la plupart des programmes qui s'attendent à parler à sendmail sont transférés vers un véritable MTA sans aucun effort de ma part.
J'ai également eu de la difficulté à envoyer des fichiers joints. Lorsque j'ai envoyé un e-mail sans pièce jointe, il a réussi, mais pas avec pièce jointe. Ce problème a été existant avec sendemail
, mutt
, mail
, mailx
, uuencode
commandes.
Heureusement, cela a été résolu de façon amusante. J'utilise Gmail pour envoyer des e-mails. Vous pouvez configurer votre gmail pour l'envoi d'e-mails via des commandes dans le terminal comme indiqué sur http://www.linuxandlife.com/2013/01/send-email-from-linux-terminal.html .
Vous pouvez envoyer un e-mail texte en utilisant:
mail -s "hello" RECEIVE@mail.com < /home/masoud/YOURFILE.txt
mais vous ne pouvez pas envoyer le même fichier en pièce jointe que ci-dessous:
mail -s "hello" RECEIVE@mail.com -a /home/masoud/YOURFILE.txt
ou:
mail -s "hello" -a /home/masoud/YOURFILE.txt RECEIVE@mail.com
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 RECEIVE@mail.com
Curieusement, la différence est l'existence de la commande "echo".
Semble que l' -a
option a été modifiée avec majuscule -A
pour la pièce jointe maintenant. Le -a
semble être pour changer l'en-tête selon le doc
.zshrc
fichier à quelqu'un et bien que j'utilise mail
beaucoup pour envoyer des messages rapides, essayer d'envoyer une pièce jointe ne fonctionnait pas. J'avais juste besoin d'une confirmation qu'il était possible de réaliser que l' ordre des arguments était très important. Cela a fonctionné pour moi: mail -s "zshrc" -a ~/.zshrc username@example.com
... bien sûr, je devais encore taper le corps du message et appuyer ctrl+d
sur la dernière ligne vierge.
mail username@example.com -a ~/.zshrc
a "fonctionné" dans la mesure où elle a envoyé le message mais n'a pas envoyé le fichier. Si j'avais essayé, mail username@example.com -a ~/.zshrc -s 'zshrc'
il aurait été évident que les paramètres après l'adresse du destinataire étaient ignorés.
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" you@gmail.com -A /your/attachment/absolute/path < /home/you/message.txt
L'option attachment
devrait être celle -A
qui est CAPITAL A
.
Vous voudrez peut-être envoyer un fichier à partir du shell , mais sinon, utilisez 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 de 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 requise.
Pour un mail adressé à you@example.com
, 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='you@example.com',body='B',attachment='/some/absolute/file.txt')"
Il y a deux problèmes:
Le fichier joint doit être donné par un chemin absolu , ce qui est fastidieux en pratique. Cela peut être géré en utilisant readlink -f
pour résoudre les chemins relatifs:
thunderbird -remote "xfeDoCommand(composeMessage,subject='S',to='you@example.com',body='B',attachment='$(readlink -f file.txt)')"
De plus, 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' test@example.com 'Body of message' file1
ouvrira une fenêtre "Ecrire" de thunderbird avec la pièce jointe et le texte De, À, Sujet et corps rempli. Il peut être modifié avant de l'envoyer.
heirloom-mailx
le paquet dans debian fournit la mailx
commande pour envoyer facilement les pièces jointes MIME. œuvres suivantes pour moi;
mailx -a attachment.zip -s subject rctp@domain.to
mail
et mailx
inclus avec RH-alikes a -a
pour les pièces jointes, mais pas celui inclus dans Debian-alikes.
Je souhaite ajouter une autre réponse qui est utilisée pour ajouter le corps du 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" -- recipient@domain.com
mail
(akamailx
) est MIME ignorant et ne peut donc pas gérer les pièces jointes d'une manière différente de 1980. C'est une bonne question, je recherche le MUA canonique canonique; plus à venir.