在使用linux mail命令自动发送邮件时,如何更改发件人名称(而不是电子邮件地址)?

在使用linux mail命令自动发送邮件时,如何更改发件人名称(而不是电子邮件地址)?,linux,email,mail-sender,Linux,Email,Mail Sender,邮箱将发件人名称显示为“Apache”,因为我正在自动发送的邮件是从Perl CGI程序发送的。如何将其更改为其他内容?您只需从:标题添加一个。默认情况下没有 echo "Test" | mail -a "From: Someone <someone@example.com>" other@example.com 这取决于你所说的发件人地址。收件人邮件程序中可见的发件人地址是从“发件人:”标题中提取的。这可能很容易从您的程序中设置 如果您谈论的是SMTP信封发件人地址,则可以将-f

邮箱将发件人名称显示为“Apache”,因为我正在自动发送的邮件是从Perl CGI程序发送的。如何将其更改为其他内容?

您只需从:标题添加一个
。默认情况下没有

echo "Test" | mail -a "From: Someone <someone@example.com>" other@example.com

这取决于你所说的发件人地址。收件人邮件程序中可见的发件人地址是从“发件人:”标题中提取的。这可能很容易从您的程序中设置

如果您谈论的是SMTP信封发件人地址,则可以将-f参数传递给sendmail二进制文件。根据服务器配置的不同,可能不允许您对apache用户执行此操作

从sendmail:

-f
此选项设置邮件的信封发件人地址
本地生成的消息(也称为返回路径)。
该选项通常只能由受信任的用户使用,但
不受信任的\u集\u发送方可以设置为允许不受信任的用户
使用它。[...]

如果在电子邮件标题中未指定发件人:标题,MTA将使用当前用户的全名,在本例中为“Apache”。您可以在/etc/passwd

mail-s“$(echo-e)”中编辑完整的用户名这是主题\n来自:Paula\n
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
答复:1232564@yourserver.com\n内容类型:text/html\n““ 米拉斯。josh@gmail.com

以上是我的解决方案。只需将“Paula”替换为您想要的任何名称,例如Johny Bravo。任何额外的标题都可以在from之后和回复之前添加……只需确保您在添加标题之前了解标题语法……这对我来说非常有效。

在Ubuntu 14.04上,这些建议都不起作用。Postfix将以登录的系统用户作为发件人进行覆盖。此链接中列出的以下解决方案有效-->

步骤:

1) 确保在/etc/postfix/main.cf中设置了此选项:

   smtp_generic_maps = hash:/etc/postfix/generic
2) echo’www数据yourusername@yourdomain.com'>>/etc/postfix/generic

3) sudo postmap/etc/postfix/generic

4) sudo service postfix restart

您可以使用“-r”选项设置发件人地址:

mail -r me@example.com -s ...
如果您还希望在“发件人”字段中包含您的真实姓名,可以使用以下格式

mail -r "me@example.com (My Name)" -s "My Subject" ...

这不管用。抱歉。@Rob:我编辑此邮件是为了给出一个自定义标题+1@Sam Hocevar的示例,感谢您提供了自定义标题示例。此命令返回的错误是:
From:Someone:没有这样的文件或目录
,就好像它将电子邮件地址视为一个目录一样。这两个命令在Fedora 17上都失败。您将一个不是文件的字符串传递到“-a”选项中,这无法工作。对于Amazon Linux(AMI)也不工作。我使用的是mail命令,而不是sendmail。我被告知mail比sendmail更通用,因此更可能在各种发行版和平台上工作,这是真的吗?afaik最常见的MTA实现提供了一个通用的sendmail兼容接口,cgi脚本直接调用sendmail也很常见。+1感谢@Gryphius。然后我会调查sendmail并尝试你的答案。首先,我需要将调用mail的参数映射到sendmail中的等效参数。我稍后会回来。+1谢谢,我会检查一下。这是一个解决方案,但不会被接受,因为我不希望为了更改电子邮件发件人而将Apache更改为另一个相同的解决方案。一个摇尾巴的狗之类的案子。应该可以更改服务器名称,毕竟,许多自动回复站点的开发人员都能很好地管理它。谢谢。这对我有用。你是同性恋!这是有效的,您将命令放在3行上,3行必须是一行,如下所示:
mail-s“$(echo-e)”这是主题\n来自:Paula回复:1232564@yourserver.com\n内容类型:text/html\n““josh@gmail.com
此答案尚未成功。我会尽量提供我如何称呼它的细节。谢谢。我已经连续7天没睡觉了,我一直在努力让它工作。这是唯一对我有效的解决方案!注:
-r
是GNU ism。在BSD上不可用。
mail -r me@example.com -s ...
mail -r "me@example.com (My Name)" -s "My Subject" ...