Например, если в диалплане есть что-то либо подобное:
same => n,System(echo "Voice message. текст из яндекс: ${TEXT1}" | mailx -a /record/${UNIQUEID}.wav -s "Voice message from (в скобках русские буквы)" $EMAIL)
На почту приходит сообщение с Темой "Voice message from (?? ?????????????? ?????????????? ??????????)", а Тело сообщения как вложение с именем noname. Если пробовать запускать эту команду из консоли все работает, из скрипта тоже. Проблема возникает, если именно запускать из астериска.
Что говорит гугл:
https://access.redhat.com/solutions/1136493
На сервере стоит
ii heirloom-mailx 12.5-4 amd64 feature-rich BSD mail(1)
возможные способы:
1) mailx - поставить mailutils вместо heirloom-mailx (но они имеют разные флаги, при большом кол-ве сервером придется везде править диалплан, где вызывается system() с командой mail)
2) sendmail (необходимо самому прописывать заголовки, subject, data, в одну строку не получится сделать)
3) mutt (из особенностей - чтобы отправка заработала в астериске, необходима команда sudo mutt)
Рабочий вариант:
same => n,System(echo "Voice message. текст из яндекс: ${TEXT1}" | sudo mutt -s "Voice message from (в скобках русские буквы)" $EMAIL -a /record/${UNIQUEID}.wav)
P.S. По умолчанию mutt пытается отправить через локальный почтовый сервер, если идет отправка через яндекс или gmail средствами ssmtp, то необходимо добавить еще:
cat /root/.muttrc set sendmail="/usr/sbin/ssmtp" # путь к ssmtp set realname="NoReply" # имя отправителя set from="noreply\@test.com" # e-mail отправителя set charset="utf-8"
Подробно - здесь https://habrahabr.ru/post/82919/
Если не выставить настройку set charset="utf-8", то многие почтовые клиенты не смогут нормально отобразить русский заголовок или тело письма. Заголовок Content-Type будет выглядеть как:
Content-Type: text/plain; charset=unknown-8bit
При этом почтовый клиент gmail нормально отобразит как тему, так и тело сообщения, почтовый клиент mail.ru нормально покажет только тему сообщения, вместо тела будет знаки вопроса, другие почтовые клиенты ни тему, ни тело не покажут.