如何通过 Linux 中的“邮件”向包含“与”符号的用户名发送电子邮件?

如何通过 Linux 中的“邮件”向包含“与”符号的用户名发送电子邮件?

对于用户名“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]

看起来工作正常。

相关内容