2012-04-27 2 views
14

Я используюLinux Mail <file.log имеет Content-Type: приложения/октет-поток (вложение Noname в Gmail)

mail -s "here is a log file" "[email protected]" < log/logfile.log 

Который приходил через с заголовками:

User-Agent: Heirloom mailx 12.4 7/29/08 
MIME-Version: 1.0 
Content-Type: text/plain; charset=us-ascii 
Content-Transfer-Encoding: 7bit 

Но теперь файлы больше я получаю безымянное вложения, потому что с этим:

User-Agent: Heirloom mailx 12.4 7/29/08 
MIME-Version: 1.0 
Content-Type: application/octet-stream 
Content-Transfer-Encoding: base64 

Так что, если все остальное терпит неудачу, проверьте ручной...

NAME 
     mailx - send and receive Internet mail 

SYNOPSIS 
     mailx [-BDdEFintv~] [-s subject] [-a attachment ] [-c cc-addr] [-b bcc-addr] [-r from-addr] [-h hops] 
       [-A account] [-S variable[=value]] to-addr . . . 

Ни один из этих вариантов не кажется, полезно, так как я могу заставить Content-Type: text/plain?

ответ

11

Персональная страница - хорошее место для начала! Продолжайте читать, пока вы не дойдете до раздела MIME TYPES, и обратить пристальное внимание на следующее:

В противном случае, или если имя файла не имеет расширения, то типы контента текст/обычный или приложения/октет-поток являются используется, первый для текстовых или международных текстовых файлов, второй для любого файла, который содержит форматирование char- актеров, отличных от новых строк и горизонтальных табуляторов.

Таким образом, если ваше сообщение содержит «символы форматирования» (что вообще означает управляющие символы), кроме строки и вкладок, он будет автоматически классифицироваться как application/octet-stream. Готов поспорить, что если вы внимательно посмотрите на данные, вы обнаружите, что некоторые управляющие символы плавают вокруг.

Вы можете работать вокруг этого ...

  • В том числе лог-файл в виде вложения (с использованием -a) вместо основного тела сообщения, а также создать файл ~/.mime.types, чтобы определить *.log файлы как текст/равнина.
  • Отфильтровать контрольные символы, используя что-то вроде tr.
  • Используйте другую MUA, такую ​​как mutt, чтобы отправить письмо. На самом деле, можно просто обработать сообщение самостоятельно и отправить его непосредственно sendmail:

    (
        echo To: [email protected] 
        echo From: [email protected] 
        echo Subject: a logfile 
        echo 
        cat logfile.log 
    ) | sendmail -t 
    
+0

тр -CD «\ 11 \ 12 \ 15 \ 40- \ 176 ' KCD

+0

Я заметил этот комментарий о типах mime. Спасибо за ваши обходные пути, любой из которых будет отлично работать – KCD

+0

Спасибо. Использование mutt - более простое решение. –

2

В моем случае сценарий был вызван из хрон, где LC_ * не был определен и акценты были интерпретированы как «контроль символы». Я просто вставить следующие строки в начале моего кронтаб файла:

LC_NAME=fr_FR.UTF-8 
LC_ALL=fr_FR.UTF-8 
+0

Или 'en_US.UTF-8' –

3

У меня были некоторые проблемы, чтобы получить мои сценарии автоматической электронной почты, чтобы работать после перехода на Ubuntu Precise 12.04. Я не знаю, когда Ubuntu (или Debian) обменял bsd-mailx на heirloom-mailx, но две команды «mail» ведут себя по-разному. (Например, heirloom использует -a для вложений, в то время как используется для дополнительных заголовков в bsd.) В моем случае heirloom-mailx не смог надежно определить тип Mime и продолжал отправлять текст в виде вложений. Обвиняйте меня за то, что вы не лишаете контрольных символов или что-то еще, но я не вижу большого смысла в изменении сценариев, которые отлично справились с задачей до обновления. Итак, если вы предпочитаете устанавливать Mimetype самостоятельно, bsd-mailx - лучшее решение.

sudo apt-get install bsd-mailx 
sudo apt-get remove heirloom-mailx 

Решено для меня.

+0

+1 для упоминания [реликвии] (http://heirloom.sourceforge.net/mailx/mailx.1.html). В системе Linux без «человека» мне не удалось выяснить, какой «mailx» использовался, поскольку «mailx -V» просто напечатал версию, а не ее имя или тип. – Qtax

8

я получил подобную проблему в последнее время и, наконец, в конечном итоге решение, которое короче:

cat -v log/logfile.log | mail -s "here is a log file" "[email protected]" 

Более подробную информацию о discussion of cat with mailx.

+0

Вариант -v кошки был очень полезен, так как я мог уйти, почему у меня возникла проблема с получением тела моей почты в качестве вложения. Спасибо. – MadJlzz

3

В системах на базе RedHat (SL, CentOS, Fedora и т.д.), вы хотите установить Bsd-mailx, а затем установить/и т.д./альтернатив/почта надлежащим образом:

sudo yum -y install bsd-mailx 
sudo alternatives --set mail /usr/bin/bsd-mailx 

Конечно, вы рискуете которые полагаются на поведение heirloom-mailx, но явно не называют «mailx» вместо «mail».

Для отображения информации о/бен/почта в настоящее время указывает на:

sudo alternatives --display mail 

Для проверки различных установленных пакетов mailx:

sudo rpm -qa *mailx