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.

Était-ce utile?

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top