对于用户名“A&B
“
[abuser@myserver] chfn -f "A&B"
Changing finger information for abuser
Password:
Finger information changed.
[abuser@myserver] mail -s Test [email protected]
Hello World!
Cc:
[abuser@myserver]
当这封邮件到达时,“&
“似乎被电子邮件发件人字段中的用户名所取代。
From: AAbuserB [abuser@myserver]
答案1
尝试
mail -a "From: A&B <abuser@myserver>" -s Test [email protected]
答案2
尝试使用引用的可打印编码:
chfn -f "=?ISO-8859-15?Q?A=26B?="
“&”符号在哪里=26
?看上去很丑,但应该能解决问题。
编辑:不是mail
,但你应该尝试其他替代方案:使用 sendmail(你的 MTA 的接口,而不是 sendmail 本身)。或者mutt
也适用于脚本发送邮件。mail
在这种情况下,该命令的功能太受限制。如果你真的需要一个mail
命令,那么你需要编写一个名为的包装器,mail
它在内部调用mutt
发送。
答案3
此行为是由于邮件传输代理 (MTA) 处理&
邮箱名称中的字符而导致的/etc/passwd
来自passwd 手册页:
gcos-field 是用户的真实姓名,以及在邮件消息标题中传递的信息。(由于历史原因,它被称为 gcos-field。)此字段中的“&”(与号)代表登录名(在登录名出现在用户真实姓名中的情况下)。
在这种情况下的解决方法是在邮件客户端中明确设置发件人地址。
例如,使用mutt
(如@mailq 所建议):
~/.muttrc
set realname="A&B"
set from="ab@myserver"
set use_from=yes
正在发送测试电子邮件...
echo "Test body" | mutt -s "Test" [email protected]
看起来工作正常。