使用mail TO_ADDR
从Unix命令行发送消息会产生来自$USER@$HOSTNAME
的电子邮件。有没有办法更改mail
插入的“发件人:”地址?
为了记录,我在Ubuntu上使用GNU Mailutils 1.1 / 1.2(但我看到Fedora和RHEL的行为相同)。
[编辑]
$ mail -s Testing chris@example.org Cc: From: foo@bar.org Testing .
产量
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
“From:foo@bar.org”行是邮件正文的一部分,而不是标题的一部分。
答案 0 :(得分:96)
在我的邮件版本(Debian linux 4.0)中,以下选项可用于控制源/回复地址
所以以下顺序
export REPLYTO=cms-replies@example.com
mail -aFrom:cms-sends@example.com -s 'Testing'
结果,在我的邮件客户端,是来自cms-sends@example.com的邮件,任何回复都将默认为cms-replies@example.com
注意: Mac OS用户:你没有-a,但确实有 $ REPLYTO
NB(2): CentOS用户,许多评论者补充说您需要使用-r
而不是-a
注意事项(3):这个答案至少有十年之久(1),请您在加入Google时牢记这一点。
答案 1 :(得分:42)
在Centos 5.3上,我能够做到:
mail -s "Subject" user@address.com -- -f from@address.com < body
双短划线阻止邮件解析-f参数并将其传递给sendmail本身。
答案 2 :(得分:21)
GNU mailutils的'mail'命令不允许你这样做(至少很容易)。但是如果你安装'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
答案 3 :(得分:13)
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
上面是我的解决方案......任何额外的标题都可以在回复之后和之前添加...只是确保你在添加它们之前知道你的标题语法....这对我来说非常有用
答案 4 :(得分:7)
另外,最好使用-F option
指定发件人名称。
这样的事情:
mail -s "$SUBJECT" $MAILTO -- -F $MAILFROM -f ${MAILFROM}@somedomain.com
或者只看一下可用选项: http://www.courier-mta.org/sendmail.html
答案 5 :(得分:5)
也可以使用以下内容设置发件人姓名和地址:
echo test | mail -s "test" example@example.com -- -F'Some Name<example2@example.com>' -t
由于某些原因,传递-F'Some Name'
和-fexample2@example.com
不起作用,但将-t
传递给sendmail是有效的并且“很容易”。
答案 6 :(得分:4)
以下是一些选项:
如果您有足够的privelige,请将sendmail配置为使用泛型表进行重写
自己编写整个标题(或将其邮寄给自己,使用所有标题保存整个邮件,然后重新编辑,并使用命令行中的rmail发送
使用sendmail直接发送,请使用“-f”命令行标记,并且不要在邮件中包含“发件人:”行
这些并非完全相同,但我会留待你进一步研究。
在我的便携式计算机上,我有sendmail身份验证作为客户端到外发邮件服务器,我使用泛型使返回的邮件进入另一个帐户。它就像一个魅力。 我使用fetchmail聚合传入邮件。
答案 7 :(得分:3)
我不知道它是否与其他操作系统相同,但在OpenBSD中,mail命令具有以下语法:
mail to-addr ... -sendmail-options ...
sendmail有-f选项,您可以在其中指明FROM:字段的电子邮件地址。以下命令适用于我。
mail recepient@example.com -f from@example.com
答案 8 :(得分:3)
感谢BEAU
mail -s "Subject" user@address.com -- -f from@address.com
我刚发现这个,它对我有用。 CentOS 5上邮件8.1的手册页没有提到这一点。对于-f
选项,手册页说:
-f从文件操作数指定的文件而不是系统邮箱中读取消息。 (另请参阅文件夹。)如果未指定文件操作数,请从mbox而不是系统邮箱中读取消息。
所以无论如何,这很好找,谢谢。
答案 9 :(得分:3)
我从上述所有答案中得出了这一点。当我尝试每一个时,没有什么对我有用。通过结合上述所有答案,我做了很多追踪和错误,并得出结论。我不确定这对你有用,但在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 <发送邮件/ p>
希望这有帮助。
答案 10 :(得分:3)
在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")
答案 11 :(得分:2)
echo "body" | mail -S from=address@foo.com "Hello"
-S允许您指定许多字符串选项,这是修改标题等最简单的方法。
答案 12 :(得分:1)
在CentOS上,这对我有用:
echo "email body" | mail -s "Subject here" -r from_email_address email_address_to
答案 13 :(得分:0)
在CentOS 5.5上,我发现从域设置默认值的最简单方法是修改hosts文件。如果您的hosts文件包含您的WAN /公共IP地址,只需修改为其列出的第一个主机名。例如,您的hosts文件可能如下所示:
...
11.22.33.44 localhost default-domain whatever-else.com
...
要从whatever-else.com发送,只需修改它,以便首先列出whatever-else.com,例如:
...
11.22.33.44 whatever-else.com localhost default-domain
...
我不能代表任何其他发行版(甚至是CentOS版本),但在我的特定情况下,上述功能完美无缺。
答案 14 :(得分:0)
这对我有用
echo "hi root"|mail -rsawrub@testingdomain.org -s'testinggg' root
答案 15 :(得分:0)
它适用于OpenBSD。
答案 16 :(得分:0)
允许我使用Ubuntu 16.04
编码和文件附件在UTF-8
上设置自定义回复地址:
安装邮件客户端:
sudo apt-get install heirloom-mailx
编辑SMTP配置:
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)
答案 17 :(得分:0)
以上解决方案均不适合我...
#!/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"
答案 18 :(得分:0)
我最近的 GNU mailutils mail
版本只是 mail -r foo@bar.com
。
查看原始发送邮件,似乎同时设置了 Return-Path: <foo@bar.com>
和 From: foo@bar.com
。
答案 19 :(得分:-1)
之前提供的答案在CentOS5上对我不起作用。我安装了mutt。它有很多选择。用mutt你这样做:
export EMAIL=myfrom@example.com
export REPLYTO=myreplyto@example.com
mutt -s Testing chris@example.org