65

有谁知道在使用 mail 命令发送电子邮件时如何更改 from 用户?我已经浏览了手册页,但看不到如何执行此操作。

我们正在运行 Redhat Linux 5。

4

16 回答 16

78

您可以使用 -a 指定您可能需要的任何额外标题

$mail -s "Some random subject" -a "From: some@mail.tld" to@mail.tld
于 2008-09-23T07:03:54.037 回答
27

http://www.mindspill.org/962似乎有一个解决方案。

本质上:

echo "This is the main body of the mail" | mail -s "Subject of the Email" recipent_address@example.com -- -f from_user@example.com

于 2008-09-23T06:44:28.653 回答
25

邮件 -r from@from.from -R from@from.com

-r = from-addr -R = 回复地址

作者表示他的邮件版本不支持此标志。但是,如果您有一个可以正常工作的版本。

于 2008-09-23T06:31:51.073 回答
21

通过 SMTP 发送时,mail手册页建议以from这种方式设置变量(在 CentOS 6 上测试):

mail -s Subject -S from=sender@example.com recipient@example.com

-a您还可以使用以下选项附加文件:

mail -s Subject -S from=sender@example.com -a path_to_attachement recipient@example.com
于 2014-05-05T12:11:34.497 回答
7

这些都不适合我(Ubuntu 12.04),但最终经过反复试验,我得到了:

echo 'my message blabla\nSecond line (optional of course)' | 
mail -s "Your message title"
-r 'Your full name<yourSenderAdress@yourDomain.abc>'
-Sreplyto="yourReplyAdressIfDifferent@domain.abc"
destinatorEmail@destDomain.abc[,otherDestinator@otherDomain.abc]

(全部在一行中,“-Sreplyto”中没有空格)

我从以下位置收到此邮件命令:

apt-get install mailutils
于 2013-10-04T20:58:45.470 回答
5

您可以通过先添加 -- 将 sendmail 选项附加到邮件命令的末尾。-f 是 sendmail 上设置发件人地址的命令。所以你可以这样做:

邮件收件人@foo.com -- -f 发件人@bar.com

于 2008-09-23T06:49:34.773 回答
3

以上都不适合我。我花了很长时间才弄清楚,希望这对下一个人有帮助。

我正在使用带有 mailutils v2.1 的 Ubuntu 12.04 LTS。

我在网上某处找到了这个解决方案,不知道在哪里,再也找不到了:

-aFrom:Servername-Server@mydomain.com

使用的完整命令:

cat /root/Reports/ServerName-Report-$DATE.txt | mail -s "Server-Name-Report-$DATE" myemailadress@mydomain.com -aFrom:Servername-Server@mydomain.com
于 2014-01-14T13:13:40.743 回答
2

这是一个解决方案

-r 之后的第二个最简单的解决方案(即指定 From: 标头并通过像这样的换行符将其与正文分开

 $mail -s "Subject" destination@example.com
 From: Joel <joel@example.com>

 Hi!
 .

仅在少数邮件版本中有效,不知道redhat 带有什么版本)。

PS:大多数版本的邮件都很烂!

于 2008-09-23T06:34:08.523 回答
1

在 CentOs5 上:-r from@me.omg

于 2010-02-03T11:01:30.087 回答
1
echo "This is the main body of the mail" | mail -s "Subject of the Email" recipent_address@example.com -- -f from_user@example.com -F "Elvis Presley"

或者

echo "This is the main body of the mail" | mail -s "Subject of the Email" recipent_address@example.com -aFrom:"Elvis Presley<from_user@example.com>"
于 2014-04-15T21:42:08.877 回答
1

大多数人在尝试正确伪造电子邮件上的发件人地址时需要更改两个值。第一个是发件人地址,第二个是原始地址。许多在线提供的解决方案只改变了其中一个值。

如果以 root 身份,我尝试一个简单的邮件命令给自己发送一封电子邮件,它可能看起来像这样。 echo "test" | mail -s "a test" me@noone.com

以及相关的日志: Feb 6 09:02:51 myserver postfix/qmgr[28875]: B10322269D: from=<root@myserver.com>, size=437, nrcpt=1 (queue active) Feb 6 09:02:52 myserver postfix/smtp[19848]: B10322269D: to=<me@noone.com>, relay=myMTA[x.x.x.x]:25, delay=0.34, delays=0.1/0/0.11/0.13, dsn=2.0.0, status=sent (250 Ok 0000014b5f678593-a0e399ef-a801-4655-ad6b-19864a220f38-000000)

尝试使用 - 更改发件人地址 echo "test" | mail -s "a test" me@noone.com -- dude@thisguy.com

这会更改 orig-to 值,但不会更改 from 值: Feb 6 09:09:09 myserver postfix/qmgr[28875]: 6BD362269D: from=<root@myserver.com>, size=474, nrcpt=2 (queue active) Feb 6 09:09:09 myserver postfix/smtp[20505]: 6BD362269D: to=<me@noone>, orig_to=<dude@thisguy.com>, relay=myMTA[x.x.x.x]:25, delay=0.31, delays=0.06/0/0.09/0.15, dsn=2.0.0, status=sent (250 Ok 0000014b5f6d48e2-a98b70be-fb02-44e0-8eb3-e4f5b1820265-000000)

接下来尝试使用 -r 和 -- 来调整 from 和 orig-to。 echo "test" | mail -s "a test" -r dude@comeguy.com me@noone.com -- dude@someguy.com

和日志: Feb 6 09:17:11 myserver postfix/qmgr[28875]: E3B972264C: from=<dude@someguy.com>, size=459, nrcpt=2 (queue active) Feb 6 09:17:11 myserver postfix/smtp[21559]: E3B972264C: to=<me@noone.com>, orig_to=<dude@someguy.com>, relay=myMTA[x.x.x.x]:25, delay=1.1, delays=0.56/0.24/0.11/0.17, dsn=2.0.0, status=sent (250 Ok 0000014b5f74a2c0-c06709f0-4e8d-4d7e-9abf-dbcea2bee2ea-000000)

这就是它为我工作的方式。希望这可以帮助某人。

于 2015-02-06T15:21:01.443 回答
1

这适用于 Centos7

echo "This is the main body of the mail" | mail -s "Subject of the Email" -r seneder_address@whatever.com recipent_address@example.com

于 2016-05-13T00:40:18.083 回答
1

这是 2018 年关于 Debian 9 的答案。

请注意-efor echo 允许换行符,以及-rmailx 显示名称以及外发电子邮件地址:

$ echo -e "testing email via yourisp.com from command line\n\nsent on: $(date)" | mailx -r "Foghorn Leghorn <sender@yourisp.com>" -s "test cli email $(date)" -- recipient@somedomain.com

希望这可以帮助!

于 2018-04-21T15:02:00.257 回答
1

对于 CentOS,这里是工作命令:

mail -s Subject -S from=sender@example.com recipient@example.com
于 2019-08-30T11:18:07.397 回答
0

多亏了所有示例提供者,有些提供者没有工作。下面是另一个对我有用的简单示例格式。

echo "Sample body" | mail -s "Test email" from=sender-addrs@example.com recepient-addres@example.com
于 2015-09-21T18:36:54.120 回答
-1

我遇到了同样的问题。但我解决了这个问题,只是在/ect/passwd字段中设置 geko字段。Postfix 默认从用户登录发送邮件。假设您想从字段更改为警报。您只需要在您喜欢的任何编辑器中编辑 /ect/passwd 文件。

  1. vim /ect/密码

根:x:0:0:警报:/root:/bin/bash

  1. 重启后缀。

现在检查结果。

  1. echo "这是邮件的主体" | mail -s "邮件主题" user@domain.com

现在在收件人。正如您在 geko 字段中指定的那样,发件人将显示为警报。希望这个解决方案对你有用。

于 2016-08-22T23:08:37.053 回答