Modifier le champ “from:” de l'adresse dans Unix “mail”
Question
L'envoi d'un message à partir de la ligne de commande Unix à l'aide de mail TO_ADDR
résultats dans un e-mail à partir de $USER@$HOSTNAME
.Est-il un moyen de modifier le champ "from:" de l'adresse, inséré par la mail
?
Pour le dossier, j'utilise GNU Mailutils 1.1/1.2 sur Ubuntu (mais j'ai vu le même comportement avec Fedora et RHEL).
[MODIFIER]
$ mail -s Testing chris@example.org Cc: From: foo@bar.org Testing .
les rendements
Subject: Testing To: <chris@example.org> X-Mailer: mail (GNU Mailutils 1.1) Message-Id: <E1KdTJj-00025z-RK@localhost> From: <chris@localhost> Date: Wed, 10 Sep 2008 13:17:23 -0400 From: foo@bar.org Testing
Le "À Partir De:foo@bar.org" la ligne est la partie du corps du message, ne fait pas partie de l'en-tête.
La solution
Dans ma version de mail ( linux Debian 4.0 ) les options suivantes de travail pour le contrôle de la source / répondre adresses
- l' -un interrupteur, pour les en-têtes supplémentaires à appliquer, en fournissant une à Partir de:l'en-tête sur la ligne de commande qui sera ajouté à l'en-tête de courrier sortant
- l' $REPLYTO la variable d'environnement spécifie une Réponse:l'en-tête
donc la séquence suivante
export REPLYTO=cms-replies@example.com
mail -aFrom:cms-sends@example.com -s 'Testing'
Le résultat, dans mes clients de messagerie, est un mail de cms-sends@example.com les réponses par défaut cms-replies@example.com
NB: Les utilisateurs de Mac OS:vous n'avez pas , mais vous n'avez $REPLYTO
NB(2): CentOS utilisateurs, de nombreux participants ont ajouté que vous devez utiliser -r
pas -a
NB(3): Cette réponse est d'au moins dix ans(1), s'il vous plaît garder cela à l'esprit lorsque vous êtes en provenance de Google.
Autres conseils
Sur Centos 5.3 je suis capable de faire:
mail -s "Subject" user@address.com -- -f from@address.com < body
La double dash cesse de courrier à partir de l'analyse de l'argument-f et passe ainsi que de sendmail lui-même.
GNU mailutils du "mail" commande de ne pas vous laisser faire cela (facilement au moins).Mais Si vous installez 'heirloom-mailx, son électronique de commande (mailx) a l'option '-r' pour remplacer la valeur par défaut "$USER@$HOSTNAME' de champ.
echo "Hello there" | mail -s "testing" -r sender@company.com recipient@company.com
Fonctionne pour 'mailx", mais pas "mail".
$ ls -l /usr/bin/mail lrwxrwxrwx 1 root root 22 2010-12-23 08:33 /usr/bin/mail -> /etc/alternatives/mail $ ls -l /etc/alternatives/mail lrwxrwxrwx 1 root root 23 2010-12-23 08:33 /etc/alternatives/mail -> /usr/bin/heirloom-mailx
mail -s "$(echo -e "This is the subject\nFrom: Paula <johny@paula.com>\n
Reply-to: 1232564@yourserver.com\nContent-Type: text/html\n")"
milas.josh@gmail.com < htmlFileMessage.txt
le ci-dessus est ma solution....tout des en-têtes supplémentaires peuvent être ajoutés juste après le de et avant de répondre à...assurez-vous de connaître vos en-têtes de syntaxe avant de les ajouter....cela a fonctionné parfaitement pour moi.
De Plus, il est bon d'utiliser -F option
de spécifier le Nom de l'expéditeur.
Quelque chose comme ceci:
mail -s "$SUBJECT" $MAILTO -- -F $MAILFROM -f ${MAILFROM}@somedomain.com
Ou tout simplement regarder les options disponibles:http://www.courier-mta.org/sendmail.html
Il est également possible de définir à la fois le nom et l'adresse de l'expéditeur en utilisant quelque chose comme:
echo test | mail -s "test" example@example.com -- -F'Some Name<example2@example.com>' -t
Pour une raison quelconque passant -F'Some Name'
et -fexample2@example.com
ne fonctionne pas, mais le passage dans le -t
à sendmail fonctionne et il est "facile".
Voici quelques options:
Si vous avez privelige assez, configurer sendmail pour ne réécrit avec les génériques de table
Écrire l'intégralité de l'en-tête vous-même (ou mail, enregistrer le message dans son intégralité avec tous les en-têtes, et de ré-éditer, et de l'envoyer avec rmail, à partir de la ligne de commande
Envoyer directement avec sendmail, utilisez l'option "-f" option de ligne de commande et ne comprennent pas votre "from:" dans votre message
Ce ne sont pas tous exactement le même, mais je vous laisser regarder plus loin.
Sur mon portable, j'ai sendmail de l'authentification d'un client à un serveur de courrier sortant, et j'ai utiliser des génériques pour faire retour de mail venir à un autre compte.Il fonctionne comme un charme.Je agrégation de courrier entrant avec fetchmail.
Je ne sais pas si c'est la même chose avec d'autres OS, mais dans OpenBSD, la commande mail a cette syntaxe:
mail to-addr ... -sendmail-options ...
sendmail a l'option-f, où vous indiquez l'adresse email de la:champ.La commande suivante fonctionne pour moi.
mail recepient@example.com -f from@example.com
Merci BEAU
mail -s "Subject" user@address.com -- -f from@address.com
Je viens de trouver ceci et cela fonctionne pour moi.Les pages man pour le courrier 8.1 sur CentOS 5 ne mentionne pas cette.Pour -f
option, la page de man dit:
-f Lire les messages à partir d'un fichier appelé par le fichier opérande au lieu de la boîte aux lettres système.(Voir aussi le dossier.) Si aucun fichier n'opérande est spécifié, lire les messages de la mbox au lieu de la boîte aux lettres système.
De toute façon c'est bien de trouver, merci.
J'ai tiré ce à partir de toutes les réponses ci-dessus.Rien n'a fonctionné pour moi quand j'ai essayé de chacun d'eux.J'ai fait beaucoup de trail et de l'erreur en associant toutes les réponses ci-dessus, et a conclu sur ce point.Je ne suis pas sûr si cela fonctionne pour vous, mais cela a fonctionné pour moi sur Ununtu 12.04 et RHEL 5.4.
echo "This is the body of the mail" | mail -s 'This is the subject' '<receiver-id1@email.com>,<receiver-id2@email.com>' -- -F '<SenderName>' -f '<from-id@email.com>'
On peut envoyer le courrier à n'importe quel nombre de personnes en ajoutant un numéro de récepteur de l'id et le courrier est envoyé par SenderName à partir de from-id@email.com
Espérons que cette aide.
Sur Debian 7, j'étais encore incapable de régler correctement l'adresse de l'expéditeur à l'aide des réponses de cette question, (serait toujours le nom d'hôte du serveur) mais résolu de cette façon.
Installer heirloom-mailx
apt-get install heirloom-mailx
s'assurer que c'est la valeur par défaut.
update-alternatives --config mailx
La composition d'un message.
mail -s "Testing from & replyto" -r "sender <sender@example.com>" -S replyto="sender@example.com" recipient@example.net < <(echo "Test message")
echo "body" | mail -S from=address@foo.com "Hello"
-S permet de spécifier beaucoup d'options de chaîne, et de loin, le moyen le plus facile de modifier les en-têtes et ces.
Sur CentOS cela a fonctionné pour moi:
echo "email body" | mail -s "Subject here" -r from_email_address email_address_to
cela a fonctionné pour moi
echo "hi root"|mail -rsawrub@testingdomain.org -s'testinggg' root
Sur CentOS 5.5, la façon la plus simple que j'ai trouvé pour définir la valeur par défaut de domaine est de modifier le fichier hosts.Si votre fichier hosts contient votre WAN/adresse IP publique, il suffit de modifier le premier nom d'hôte répertoriées pour elle.Par exemple, votre fichier hosts peut ressembler à:
...
11.22.33.44 localhost par défaut-domaine whatever-else.com
...
Pour le faire envoyer à partir de whatever-else.com, il suffit de le modifier pour qu'whatever-else.com est premier sur la liste, par exemple:
...
11.22.33.44 whatever-else.com localhost par défaut-domaine
...
Je ne peux pas parler pour tout autre distro (ou même la version de CentOS) mais dans mon cas particulier, le ci-dessus fonctionne parfaitement.
echo "test" | mailx -r fake@example.com -s 'test' email@example.com
Il travaille dans OpenBSD.
Ce qui m'a permis d'avoir un custom adresse de réponse sur un Ubuntu 16.04
avec UTF-8
codage et un fichier en pièce jointe:
Installez le client de messagerie:
sudo apt-get install heirloom-mailx
Modifier la configuration SMTP:
sudo vim /etc/ssmtp/ssmtp.conf
mailhub=smtp.gmail.com:587
FromLineOverride=YES
AuthUser=???@gmail.com
AuthPass=???
UseSTARTTLS=YES
Envoyer l'e-mail:
sender='send@domain.com'
recipient='recipient@domain.com'
zipfile="results/file.zip"
today=`date +\%d-\%m-\%Y`
mailSubject='My subject on the '$today
read -r -d '' mailBody << EOM
Find attached the zip file.
Regards,
EOM
mail -s "$mailSubject" -r "Name <$sender>" -S replyto="$sender" -a $zipfile $recipient < <(echo $mailBody)
Aucune des solutions ci-dessus sont de travail pour moi...
#!/bin/bash
# Message
echo "My message" > message.txt
# Mail
subject="Test"
mail_header="From: John Smith <john.smith@example.com>"
recipients="recipient@example.com"
#######################################################################
cat message.txt | mail -s "$subject" -a "$mail_header" -t "$recipients"
Les réponses fournies avant ne fonctionne pas pour moi sur CentOS5.J'ai installé mutt.Il a beaucoup d'options.Avec mutt vous le faire de cette façon:
export EMAIL=myfrom@example.com
export REPLYTO=myreplyto@example.com
mutt -s Testing chris@example.org