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

91

Comment puis-je envoyer un e-mail via la mailxcommande UNIX ?

user269484
la source

Réponses:

108

un exemple

$ echo "something" | mailx -s "subject" [email protected]

envoyer une pièce jointe

$ uuencode file file | mailx -s "subject" [email protected]

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

$ (echo "something\n" ; uuencode file file) | mailx -s "subject" [email protected]
ghostdog74
la source
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 à [email protected]. 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.

Kamran Ahmad
la source
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 [email protected]
Kalpesh Soni
6
mailx -s "subjec_of_mail" [email protected] < 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

Girdhar Singh Rathore
la source
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.

Pavan Kumar
la source
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 [email protected] [email protected] -y
  1. -c liste cc email
  2. -s liste de sujets
  3. -y pour envoyer le mail
user1651561
la source
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" [email protected]
Hlovdal
la source
3
echo "Sending emails ..."
NOW=$(date +"%F %H:%M")
echo $NOW  " Running service" >> open_files.log
header=`echo "Service Restarting: " $NOW`


mail -s "$header" [email protected],   \
              [email protected], \ < open_files.log
Piyush Mattoo
la source
1

Personnalisation de l'adresse FROM

MESSAGE="SOME MESSAGE"
SUBJECT="SOME SUBJECT"
TOADDR="[email protected]"
FROM="DONOTREPLY"

echo $MESSAGE | mail  -s "$SUBJECT" $TOADDR  -- -f $FROM
Hari
la source
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

Ivo Yordanov
la source
0

Si vous souhaitez envoyer plus de deux personnes ou DL:

echo "Message Body" | mailx -s "Message Title" -r [email protected] [email protected],[email protected]

ici:

  • -s = sujet ou titre du mail
  • -r = mail de l'expéditeur ou DL
dildeepak
la source
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