更改Unix中的“From:”地址“mail”

使用mail TO_ADDR从Unix命令行发送消息将产生来自$USER@$HOSTNAME的电子邮件。 有没有办法改变mail插入的“From:”地址?

为了logging,我在Ubuntu上使用GNU Mailutils 1.1 / 1.2(但我已经看到与Fedora和RHEL相同的行为)。

[编辑]

 $ mail -stestingchris@example.org                                                                  
抄送: 
来自:foo@bar.org

testing
 。

产量

主题:testing
致:<chris@example.org>
 X-Mailer:邮件(GNU Mailutils 1.1)
消息ID:<E1KdTJj-00025z-RK @ localhost>
来自:<chris @ localhost>
date:2008年9月10日,星期三13:17:23 -0400

来自:foo@bar.org

testing

“From:foo@bar.org”这一行是消息体的一部分,不是标题的一部分。

在我的邮件版本(Debian linux 4.0)中,以下选项用于控制源/回复地址

  • -a开关,用于应用其他头文件,在命令行上提供From:头文件,该头文件将被附加到外发邮件头文件中
  • $ REPLYTO环境variables指定了一个Reply-To:标题

所以下面的顺序

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

结果,在我的邮件客户端,是来自cms-sends@example.com的邮件,任何回复将默认为cms-replies@example.com

NB: Mac OS用户:你没有-a,但是你有$ REPLYTO

在Centos 5.3上,我能够做到:

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

双破折号停止parsing-f参数的邮件,并将其传递给sendmail本身。

GNU mailutils的“邮件”命令不会让你这样做(至less很容易)。 但是,如果你安装'heirloom-mailx',它的邮件命令(mailx)有'-r'选项来覆盖默认的'$ USER @ $ HOSTNAME'从字段。

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

适用于“mailx”而不是“邮件”。

 $ 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 

以上是我的解决scheme….任何额外的头可以添加之前和之后添加…只是确保你知道你的头语法之前添加它们….这对我完全工作。

另外,使用-F option可以指定发件人的名称。

像这样的东西:

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

或者只是看看可用的选项: http : //www.courier-mta.org/sendmail.html

也可以使用类似的方法来设置From名称和From地址:

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

由于某些原因传递-F'Some Name'-fexample2@example.com不起作用,但传递给sendmail的工作是“简单的”。

这里有一些选项:

  • 如果你有足够的证据,configurationsendmail用generics表进行重写

  • 自己编写整个头文件(或邮寄给自己,保存全部头文件,然后重新编辑,然后从命令行用rmail发送

  • 使用sendmail直接发送,使用“-f”命令行标志,并且不要在消息中包含“From:”行

这些不完全一样,但是我会留给你看看。

在我的便携式设备上,我将sendmail作为客户端进行身份validation,然后使用generics将返回的邮件发送到另一个帐户。 它像一个魅力。 我汇总传入的邮件与fetchmail。

我不知道是否与其他操作系统相同,但在OpenBSD中,mail命令具有以下语法:

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

sendmail具有-f选项,您可以在其中指示FROM:字段的电子邮件地址。 以下命令适用于我。

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

谢谢BEAU

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

我刚刚发现这个,它适用于我。 CentOS 5上的邮件8.1手册页没有提到这一点。 对于-f选项,手册页说:

-f从文件操作数命名的文件中读取消息,而不是系统邮箱。 (另请参阅文件夹。)如果未指定文件操作数,请从mbox而不是系统邮箱中读取消息。

所以无论如何这很好找,谢谢。

在Debian 7上,我仍然无法使用这个问题的答案正确设置发件人地址(总是服务器的主机名),但是这样解决了。

安装heirloom-mailx

 apt-get install heirloom-mailx 

确保它是默认的。

 update-alternatives --config mailx 

撰写邮件。

 mail -s "Testing from & replyto" -r "sender <sender@example.com>" -S replyto="sender@example.com" recipient@example.net < <(echo "Test message") 

我从以上所有的答案中得出这个结论。 当我尝试每一个都没有为我工作。 结合以上所有的答案,我做了很多的线索和错误,并对此作出了结论。 我不确定这是否适用于您,但在Ununtu 12.04和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>' 

可以通过添加任意数量的接收者ID将邮件发送给任意数量的人,并且邮件由来自from-id@email.com的SenderName发送

希望这可以帮助。

echo "body" | mail -S from=address@foo.com "Hello"

-S让你指定大量的string选项,迄今为止,修改标题等最简单的方法。

在CentOS上这为我工作:

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

这对我工作

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

在CentOS 5.5上,我发现从域设置默认的最简单方法是修改主机文件。 如果您的主机文件包含您的WAN /公共IP地址,只需修改列出的第一个主机名。 例如,您的主机文件可能如下所示:


11.22.33.44 localhost default-domain whatever-else.com

为了使它从whatever-else.com发送,只需将其修改为any-else.com首先列出,例如:


11.22.33.44 whatever-else.com localhost默认域

我不能说任何其他的发行版(甚至CentOS的版本),但在我的具体情况,上述作品完美。

回声“testing”| mailx -r fake@example.com -s'test'email@example.com

它在OpenBSD中有效。

什么让我有一个UTF-8编码和文件附件的Ubuntu 16.04自定义回复地址:

安装邮件客户端:

 sudo apt-get install heirloom-mailx 

编辑SMTPconfiguration:

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

发送邮件:

 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) 

之前提供的答案在CentOS5上不适用于我。 我安装了mutt。 它有很多select。 用mutt你可以这样做:

 export EMAIL=myfrom@example.com export REPLYTO=myreplyto@example.com mutt -s Testing chris@example.org