Comment envoyer un e-mail via la commande UNIX mailx?


Réponses:


108

un exemple

$ echo "something" | mailx -s "subject" recipient@somewhere.com

envoyer une pièce jointe

$ uuencode file file | mailx -s "subject" recipient@somewhere.com

et pour envoyer une pièce jointe ET écrire le corps du message

$ (echo "something\n" ; uuencode file file) | mailx -s "subject" recipient@somewhere.com

4
Je l'ai essayé mais il ne donne aucune réponse. Il ne donne pas non plus de message d'erreur ni n'envoie le courrier à myname@gmail.com. Une configuration de serveur est-elle nécessaire?
— user269484

2
aucune configuration n'est nécessaire. Vérifiez votre connection internet. J'ai une connexion directe à Internet par câble, je n'utilise pas de proxy ou quoi que ce soit, donc cela fonctionne de mon côté.
— ghostdog74

2
Vous devriez également vérifier les messages d'erreur dans votre boîte de réception. Ie run mail.
— hafichuk

2
Notez, cependant, qu'il uuencodes'agit d'une technologie héritée d'un millénaire révolu qui ne produit pas ce que nous entendons aujourd'hui par «pièces jointes». Il met essentiellement un morceau de fouillis lisible par machine à la fin du texte du message. De nos jours, vous seriez mieux servi par un mailer correctement MIME. Malheureusement, il n'y a pas de mailxremplacement universellement pris en charge par les fonctionnalités MIME, mais si c'est le cas mutt, c'est probablement le chemin le moins résistant.
— tripleee

5
@ user269484 Gmail n'accepte pas les e-mails provenant d'adresses IP non autorisées. Lire support.google.com/mail/answer/10336
— Manas Jayanth

33

Vous voilà :

echo "Body" | mailx -r "FROM_EMAIL" -s "SUBJECT" "To_EMAIL"

PS. Le corps et le sujet doivent être placés entre guillemets. Supprimez les citations des adresses e-mail FROM_EMAILet To_EMAILen les remplaçant.


1
Sur Mac, vous recevrez une erreur de la commande mailx si vous utilisez -r mailx: option illégale - r Utilisation: mailx [-EiInv] [-s sujet] [-c cc-addr] [-b bcc-addr] [ -F] vers-addr ... mailx [-EHiInNv] [-F] -f [nom] mailx [-EHiInNv] [-F] [-u utilisateur] mailx -e [-f nom] mailx -H
— jcpennypincher

vous pourriez faire -S from=a@b.com
— Kalpesh Soni

6
mailx -s "subjec_of_mail" abc@domail.com < file_name

grâce à l' mailxutilitaire, nous pouvons envoyer un fichier de unixà mail server. ici dans le code ci-dessus, nous pouvons voir que le premier paramètre est -s "subject of mail" le deuxième paramètre est mail IDet le dernier paramètre est le nom du fichier que nous voulons attacher


1
Cela ne joint pas le fichier, cela met le contenu du fichier dans le corps
— Guus

5
mail [-s subject] [-c ccaddress] [-b bccaddress] toaddress

-c et -b sont facultatifs.

-s: spécifiez l'objet; si l'objet contient des espaces, utilisez des guillemets.

-c: envoyer des copies carbone à la liste des utilisateurs séparés par une virgule.

-b: envoyer des copies carbone aveugles à la liste des utilisateurs séparés par une virgule.

J'espère que ma réponse clarifie votre doute.


5

C'est plus rapide avec la commande MUTT

echo "Body Of the Email"  | mutt -a "File_Attachment.csv" -s "Daily Report for $(date)"  -c cc_mail@g.com to_mail@g.com -y
  1. -c liste cc email
  2. -s liste de sujets
  3. -y pour envoyer le mail

4

Depuis la page de manuel:

Envoi de mail

Pour envoyer un message à une ou plusieurs personnes, mailx peut être invoqué avec des arguments qui sont les noms des personnes à qui le mail sera envoyé. L'utilisateur doit alors taper son message, suivi d'un «contrôle-D» au début d'une ligne.

En d'autres termes, mailx lit le contenu à envoyer à partir de l'entrée standard et peut être redirigé comme d'habitude. Par exemple:

ls -l $HOME | mailx -s "The content of my home directory" someone@email.adr

3
echo "Sending emails ..."
NOW=$(date +"%F %H:%M")
echo $NOW  " Running service" >> open_files.log
header=`echo "Service Restarting: " $NOW`


mail -s "$header" abc.xyz@google.com,   \
              cde.mno@yahoo.com, \ < open_files.log

1

Personnalisation de l'adresse FROM

MESSAGE="SOME MESSAGE"
SUBJECT="SOME SUBJECT"
TOADDR="u@u.com"
FROM="DONOTREPLY"

echo $MESSAGE | mail  -s "$SUBJECT" $TOADDR  -- -f $FROM

An except from man mail: -f [fichier] Lit le contenu de la mbox de l'utilisateur (ou du fichier spécifié) pour traitement; lorsque mailx est fermé, il réécrit les messages non supprimés dans ce fichier. Le fichier de chaîne est géré comme décrit pour la commande de dossier ci-dessous.
— ZJ Lyu

Cela dépend de la version que vous utilisez. Il existe plusieurs commandes mailet mailxcommandes incompatibles avec des options différentes.
— tripleee

1

Voici une fonction multifonctionnelle pour gérer l'envoi de courrier avec plusieurs pièces jointes:

enviaremail() {
values=$(echo "$@" | tr -d '\n')
listargs=()
listargs+=($values)
heirloom-mailx $( attachment=""
for (( a = 5; a < ${#listargs[@]}; a++ )); do
attachment=$(echo "-a ${listargs[a]} ")
echo "${attachment}"
done) -v -s "${titulo}" \
-S smtp-use-starttls \
-S ssl-verify=ignore \
-S smtp-auth=login \
-S smtp=smtp://$1 \
-S from="${2}" \
-S smtp-auth-user=$3 \
-S smtp-auth-password=$4 \
-S ssl-verify=ignore \
$5 < ${cuerpo}
}

appel de fonction: enviaremail "smtp.mailserver: port" "from_address" "authuser" "'pass'" "destination" "liste des pièces jointes séparées par un espace"

Remarque: supprimez les guillemets dans l'appel

De plus, n'oubliez pas de définir en externe les $ titulo (sujet) et $ cuerpo (corps) de l'email avant d'utiliser la fonction


0

Si vous souhaitez envoyer plus de deux personnes ou DL:

echo "Message Body" | mailx -s "Message Title" -r sender@someone.com receiver1@someone.com,receiver_dl@.com

ici:

  • -s = sujet ou titre du mail
  • -r = mail de l'expéditeur ou DL

Pouvez-vous expliquer pourquoi l'écho est utilisé pour transmettre le corps d'un message? Si j'omets ceci et exécute depuis MailX, le curseur clignote comme s'il attendait une entrée.
— LonelyRogue le
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.