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

时间:2011-06-30 15:32:59

标签: linux email mail-sender

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

6 个答案:

答案 0 :(得分:26)

您只需添加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

答案 1 :(得分:9)

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 ..可以在回复之前和之后添加任何额外的标题...只是确保你知道你的添加它们之前的标题语法....这对我来说很有效。

答案 2 :(得分:6)

您可以使用&#34; -r&#34;设置发件人地址的选项:

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

如果您还想在起始字段中包含真实姓名,可以使用以下格式

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

答案 3 :(得分:3)

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

中编辑完整的用户名

答案 4 :(得分:1)

这取决于您所谈论的发件人地址。在收件人mailprogramm中发送的发件人地址是从“发件人:”页眉中提取的。可以很容易地从您的程序中设置。

如果您正在谈论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. [...]

答案 5 :(得分:1)

在Ubuntu 14.04上,这些建议都没有奏效。 Postfix将以登录系统用户作为发件人覆盖。有效的是此链接中列出的以下解决方案 - &gt; Change outgoing mail address from root@servername - rackspace sendgrid postfix

步骤进行:

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

   smtp_generic_maps = hash:/etc/postfix/generic

2)echo'www-data yourusername@yourdomain.com'&gt;&gt; /等/后缀/通用

3)sudo postmap / etc / postfix / generic

4)sudo service postfix restart