Domanda

Invio di un messaggio dalla riga di comando di Unix utilizzando mail TO_ADDR risultati in una e-mail da $USER@$HOSTNAME.C'è un modo per modificare il campo "Da:" indirizzo inserito da mail?

Per la cronaca, sto usando GNU Mailutils 1.1/1.2 su Ubuntu (ma ho visto lo stesso comportamento con Fedora e RHEL).

[MODIFICA]

$ mail -s Testing chris@example.org                                                                  
Cc: 
From: foo@bar.org

Testing
.

i rendimenti

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

"Da:foo@bar.org" la linea è la parte del corpo del messaggio, non fa parte dell'intestazione.

È stato utile?

Soluzione

Nella mia versione di mail ( linux Debian 4.0 ) le seguenti opzioni per controllare la fonte / indirizzi di risposta

  • il -un interruttore, per ulteriori intestazioni di applicare, per la fornitura di un Da:intestazione della riga di comando che verrà aggiunto alla posta in uscita intestazione
  • il $REPLYTO variabile di ambiente di specificare una Risposta:intestazione

così la seguente sequenza

export REPLYTO=cms-replies@example.com
mail -aFrom:cms-sends@example.com -s 'Testing'

Il risultato, nel mio client di posta, è una e-mail da cms-sends@example.com che le risposte di default cms-replies@example.com

NB: Gli utenti di Mac OS:non hai una , ma si sono $REPLYTO

NB(2): CentOS utenti, molti commentatori hanno aggiunto che è necessario utilizzare -r non -a

NB(3): Questa risposta è di almeno dieci anni(1), si prega di tenere questo in mente quando si proviene da Google.

Altri suggerimenti

Su Centos 5.3 sono in grado di fare:

mail -s "Subject" user@address.com -- -f from@address.com < body

Il double dash si ferma mail dall'analisi dell'argomento-f e passa insieme a sendmail stesso.

GNU mailutils della 'posta' comando non ti permette di fare questo (facilmente almeno).Ma Se si installa 'cimelio di mailx', il suo comando mail (mailx) ha l'opzione '-r' opzione per ignorare l'impostazione predefinita '$USER@$HOSTNAME' dal campo.

echo "Hello there" | mail -s "testing" -r sender@company.com recipient@company.com

Lavora per 'mailx' ma non e '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

quanto sopra è la mia soluzione....qualsiasi header supplementari possono essere aggiunti solo dopo e prima la risposta...basta assicurarsi di sapere le vostre intestazioni di sintassi, prima di aggiungere....questo ha funzionato perfettamente per me.

In più è bene usare -F option per specificare il Nome del mittente.

Qualcosa di simile a questo:

mail -s "$SUBJECT" $MAILTO -- -F $MAILFROM -f ${MAILFROM}@somedomain.com

O basta guardare le opzioni disponibili:http://www.courier-mta.org/sendmail.html

È anche possibile impostare il nome e l'indirizzo da utilizzare qualcosa come:

 echo test | mail -s "test" example@example.com -- -F'Some Name<example2@example.com>' -t

Per qualche motivo il passaggio -F'Some Name' e -fexample2@example.com non funziona, ma passando il -t a sendmail funziona e che è "facile".

Qui ci sono alcune opzioni:

  • Se si dispone di privelige abbastanza, configurare sendmail per fare riscrive con i generici tabella

  • Scrivere l'intera intestazione di te (o e-mail a te stesso, salvare l'intero messaggio con tutte le intestazioni, e ri-modificare e inviare con rmail dalla riga di comando

  • Invia direttamente con sendmail, utilizzare l'opzione "-f" flag della riga di comando e non includere il tuo riga "Da:" il tuo messaggio

Questi non sono tutti esattamente lo stesso, ma lascio a voi il look più.

Sul mio portatile, ho sendmail l'autenticazione di un client a un server di posta in uscita e uso di farmaci generici per rendere il ritorno di posta venire a un altro account.Funziona come un fascino.Io di aggregazione in arrivo la posta con fetchmail.

Non so se è lo stesso con altri OS, ma in OpenBSD, il comando mail ha questa sintassi:

mail to-addr ... -sendmail-options ...

sendmail è l'opzione-f in cui si indica l'indirizzo e-mail DA:campo.Il comando riportato di seguito funziona per me.

mail recepient@example.com -f from@example.com

Grazie BEAU

mail -s "Subject" user@address.com -- -f from@address.com

Ho appena trovato questo e funziona per me.Le pagine man per mail 8.1 su CentOS 5 non parlare di questo.Per -f opzione, dice la pagina man:

-f i messaggi letti dal file di nome del file operando invece della cassetta postale di sistema.(Vedi anche la cartella.) Se il file non operando specificato, la lettura di messaggi da mbox invece della cassetta postale di sistema.

Comunque questo è grande per trovare, grazie.

Ho ricavato questo da tutte le risposte di cui sopra.Niente ha funzionato per me quando ho provato ogni uno di loro.Ho fatto molta pista ed errore combinando tutte le risposte di cui sopra e ha concluso su questo.Io non sono sicuro se questo funziona per voi, ma per me ha funzionato su Ununtu 12.04 e 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>'

Si può inviare la mail per qualsiasi numero di persone con l'aggiunta di qualsiasi numero di id del ricevitore e la mail viene inviata da SenderName da from-id@email.com

Spero che questo aiuta.

Su Debian 7 ero ancora in grado di impostare correttamente l'indirizzo del mittente utilizzando risposte a questa domanda, (per sempre il nome host del server), ma il problema è stato risolto in questo modo.

Installare heirloom-mailx

apt-get install heirloom-mailx

assicurarsi che l'impostazione predefinita.

update-alternatives --config mailx

Comporre un messaggio.

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 consente di specificare un sacco di opzioni di stringa, di gran lunga il modo più semplice per modificare le intestazioni e così via.

Su CentOS questo ha funzionato per me:

echo "email body" | mail -s "Subject here" -r from_email_address email_address_to

questo ha funzionato per me

echo "hi root"|mail -rsawrub@testingdomain.org -s'testinggg' root

Su CentOS 5.5, il modo più semplice che ho trovato per impostare il valore predefinito di dominio è quello di modificare il file hosts.Se il tuo file hosts contiene WAN/indirizzo IP pubblico, è sufficiente modificare il primo nome host elencati per esso.Per esempio, il file hosts può sembrare:

...
11.22.33.44 localhost default-dominio whatever-else.com
...

Per farla spedire da whatever-else.com semplicemente modificarlo in modo che whatever-else.com è elencato per primo, per esempio:

...
11.22.33.44 whatever-else.com localhost default-dominio
...

Non posso parlare per altre distro (o anche la versione di CentOS), ma nel mio caso particolare, di cui sopra, funziona perfettamente.

echo "prova" | mailx -r fake@example.com -s 'test' email@example.com

Funziona in OpenBSD.

Ciò che mi ha permesso di avere una custom indirizzo di risposta su un Ubuntu 16.04 con UTF-8 e codifica di un file allegato:

Installare il client di posta elettronica:

sudo apt-get install heirloom-mailx

Modificare la configurazione SMTP:

sudo vim /etc/ssmtp/ssmtp.conf
mailhub=smtp.gmail.com:587
FromLineOverride=YES
AuthUser=???@gmail.com
AuthPass=???
UseSTARTTLS=YES

Inviare la 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)

Nessuna delle soluzioni di cui sopra stanno lavorando per me...

#!/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"

Le risposte fornite prima non ha funzionato per me CentOS5.Ho installato mutt.Ha un sacco di opzioni.Con mutt è farlo in questo modo:

export EMAIL=myfrom@example.com
export REPLYTO=myreplyto@example.com
mutt -s Testing chris@example.org
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top