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

邮箱显示发件人名称为“Apache”,因为我正在自动发送的邮件是从Perl CGI程序发送的。 我如何改变它到别的东西?

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

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

您可以使用-a添加任何自定义标题:

 echo "Test" | mail -a "From: Someone <someone@example.com>" \ -a "Subject: This is a test" \ -a "X-Custom-Header: yes" other@example.com 
 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 

以上是我的解决方案..只是用你想要的任何名称替换“Paula”,例如Johny Bravo ..任何额外的头文件可以添加之前和之后的答复…只是确保你知道你的头语法之前添加他们….这对我完全工作。

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

 mail -r me@example.com -s ... 

如果您还希望将您的真实姓名包含在从字段中,则可以使用以下格式

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

如果在电子邮件标题中没有指定From:标题,则MTA将使用当前用户的全名,在本例中为“Apache”。 您可以在/ etc / passwd中编辑完整的用户名

这取决于你在说什么发件人地址。 收件人mailprogramm中的发件人地址visble是从“From:”标题中提取的。 这可能很容易从您的程序中设置。

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

从sendmail的manpage :

  -f <address> This option sets the address of the envelope sender of a locally-generated message (also known as the return path). The option can normally be used only by a trusted user, but untrusted_set_sender can be set to allow untrusted users to use it. [...] 

在Ubuntu 14.04上这些建议都没有奏效。 Postfix将覆盖登录的系统用户作为发件人。 什么工作是在此链接列出以下解决方案 – > 从根@ servername更改传出的邮件地址 – rackspace sendgrid后缀

脚步:

1)确保这是在/etc/postfix/main.cf中设置的:

  smtp_generic_maps = hash:/etc/postfix/generic 

2)echo“www-data yourusername@yourdomain.com”>> / etc / postfix / generic

3)sudo postmap / etc / postfix / generic

4)sudo服务postfix重启