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.