LinuxForum.Fans
Тема

Отсылка почты из-под крона

Автор: Cruiser78 8 сообщений 3770 просмотров
#29978

Доброго времени суток!

Итак, имеем некий скрипт, который должен по крону отправлять по листу рассылки некий файл. В принципе всё это тривиально:

text

cat $file | uuencode $file | mailx -r root@root -s "файл присоединен" adresses

Фишка в том, что если я запускаю этот скрипт руками, то всё работает нормально. Так как задумано. А вот если пускать его из под крона, по расписанию, то вместо нормального поля Subj: с текстом "файл присоединен" (текст должен быть русским, это важно), юзеру приезжають вопросики "????????? ????????".
То есть в непонятной юзерскому офтопичному оутлук-експрессу кодировке. Наведите меня на место, где собака зарылась...

#29980

Попробуйте запихнуть скриптик в файл, например, /usr/local/sbin/my-script, а потом в crontab прописать только my-script.

#30046
Flaming написал:
Попробуйте запихнуть скриптик в файл, например, /usr/local/sbin/my-script, а потом в crontab прописать только my-script.

Именно так и сделано. Я просто не стал приводить здесь всё, что делает этот скрипт. Так как он это делает правильно. А вся засада - в данной строчке. Если скрипт запускать руками, то почта отправляется правильно. А по крону - поле субжект корячится. А вот почему - не понимаю...

#30061

Возможно, дело в переменных среды? Может, надо какие-то указать крону?

#30065

Именно! Скорее всего в bash`е есть переменная с указанием кодировки, а в cron нет, т.к. последний стартует раньше. Если у Вас не UTF-8 то скорее всего iconv Вам поможет.

#30066
LinuxID написал:
Скорее всего в bash`е есть переменная с указанием кодировки, а в cron нет, т.к. последний стартует раньше. Если у Вас не UTF-8 то скорее всего iconv Вам поможет.

А. Ну тогда ещё проще.
Можно крону принудительно указать значения LC_ALL или LC_MESSAGES.

LinuxID написал:
то скорее всего iconv Вам поможет.

IMHO, это как раз костыль.

#30125
Flaming написал:

Можно крону принудительно указать значения LC_ALL или LC_MESSAGES.

Вот с этого места - поподробнее можно? Дал с консоли команды echo $LC_ALL и echo $LC_MESSAGES.
Увы, но эти переменные пусты, значения в них нет. Что надо сделать?

Или - иначе: как надо явно указать текущую кодировку в заголовках письма (в полях Subj и иже с ними)...
А ссылки - хорошие, но они на русский язык в почте никак не ориентированы. Они про то, как файл отправить. А с этим то - проблем нет. Проблема в том, чтобы его указать в явной кодировке...

И еще непонятка с кодировкой связанная. А именно - в том же скрипте применяю команду logger. Так сообщения в /var/log/messages сыпятся от неё в нормальном русском языке (юниксовом). А вот поведение mailx'a почемуто зависит от "контекста" вызова, руками с консоли - всё намано. Кроном в фоне - кодировка в поле Subj слетает...

Войдите или зарегистрируйтесь, чтобы ответить.