Назад | Перейти на главную страницу

Как мне отправить электронное письмо через «почту» в Linux для имени пользователя, содержащего амперсанд?

Для имени пользователя "A&B"

[abuser@myserver] chfn -f "A&B"
Changing finger information for abuser
Password:
Finger information changed.
[abuser@myserver] mail -s Test myemail@mycompany.com
Hello World!
Cc:
[abuser@myserver]

Когда придет это письмо, "&"заменяется именем пользователя в поле" От "электронного письма.

From: AAbuserB [abuser@myserver]

Такое поведение вызвано обработкой почтовым транспортным агентом (MTA) & символов в имени почтового ящика в /etc/passwd

Из страница руководства passwd:

Поле gcos - это настоящее имя пользователя, а также информация, передаваемая в заголовке почтового сообщения. (Это поле называется gcos-field по историческим причинам.) Символ & (амперсанд) в этом поле обозначает имя входа (в тех случаях, когда имя входа появляется в реальном имени пользователя).

Обходной путь в этом случае - явно установить адрес От в почтовом клиенте.

Например, используя mutt (как предлагает @mailq):

~/.muttrc

set realname="A&B"
set from="ab@myserver"
set use_from=yes

Отправка тестового электронного письма ...

echo "Test body" | mutt -s "Test" myemail@mycompany.com

Вроде нормально работает.

Попробуйте использовать цитируемую кодировку для печати:

chfn -f "=?ISO-8859-15?Q?A=26B?="

где =26 это амперсанд. Выглядит некрасиво, но должно помочь.

Редактировать: Это не mail, но затем вам следует попробовать другие альтернативы: использовать sendmail (интерфейс вашего MTA, а не сам sendmail). Или mutt также подходит для отправки писем по сценарию. В mail в этом случае функциональность команды слишком ограничена. И если вам действительно нужен mail тогда вам нужно написать оболочку с именем mail что внутренне вызывает mutt для отправки.

Попробуйте с

mail -a "From: A&B <abuser@myserver>" -s Test myemail@mycompany.com