- Кодировка mail-сообщений из консоли
- linux-notes.org
- Установка утилиты mail в Unix/Linux
- Команды mail/mailx в примера на Unix/Linux
- 3 thoughts on “ Команды mail/mailx в примера на Unix/Linux ”
- Добавить комментарий Отменить ответ
- изменить кодировку тела письма в mail
- Ошибка в теме со специальными символами при отправке электронной почты SMTP через openssl и s_client
- 1 ответ
Кодировка mail-сообщений из консоли
Пожалуйста подскажите решение для проблемы с кодировкой сообщений отправляемых из консоли. Имею opensuse 11.4 Почта отправленная с него читается нормально везде, кроме мобильных ус-тв (iphone, android) подключенных к exchange 2003.
Заголовок одного из писем:
Microsoft Mail Internet Headers Version 2.0 Received: from linux-srv.domain.local ([192.168.0.8]) by mail.domain.ru with Microsoft SMTPSVC(6.0.3790.4675); Wed, 26 Oct 2011 13:40:58 +0400 Received: by linux-srv.domain.local (Postfix, from userid 1007) id DFB64500051; Wed, 26 Oct 2011 13:40:58 +0400 (MSK) Date: Wed, 26 Oct 2011 13:40:58 +0400 To: dmitry@domain.ru Subject: Test User-Agent: Heirloom mailx 12.2 01/07/07 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Message-Id: From: testpilot@domain.ru Return-Path: testpilot@domain.ru X-OriginalArrivalTime: 26 Oct 2011 09:40:58.0978 (UTC) FILETIME=[5DE02C20:01CC93C3]
На мобильном устройстве тело сообщения отображается примерно в таких символах: Прошу распечР
Что и где крутить, не представляю. Надеюсь на ваши советы
echo «something»|mail -a «Content-Type: text/plain; charset=cp1251» -s Hello mail@mail.mail
и проверь, чтобы у клиентов было автораспознавание кодировки
а может все-таки UTF-8? Сомневаюсь что у ТС локаль CP1251 в консоли?
echo «бла-бла-бла» | mail -a «Content-Type: text/plain; charset=cp1251» -s Проверка dmitry@domain.ru Content-Type: text/plain; charset=cp1251: Нет такого файла или каталога
Задача в том, чтоб сообщения генерируемые службами нормально читались на устройствах руководства. До замены сервера, всё работало нормально, непонимаю где я здесь намудил
и проверь, чтобы у клиентов было автораспознавание кодировки
Источник
linux-notes.org
Команды /Mail/mailx используемые в операционных систем UNIX/Linux для отправки электронной почты (так же, для полученные и чтения сообщений электронной почты) с возможностью удалять. В своей статье «Команды mail/mailx в примера на Unix/Linux» я расскажу как установить и использовать утилиту (команду) mail на ОС Unix или Linux.
Синтаксис команды mail:
Опции.
-v : Подробный режим. Детали отправки отображаются на экране.
-s : Опция задает тему для письма.
-c : Отправить СС (копии для других пользователей).
-b :Отправить BС (копии для других пользователей).
-f : Прочитать содержимое почтового ящика.
-e : Проверка на наличие почты в почтовом ящике.
-F : Записывает сообщение в файл с именем после получения.
-r : Опция для указания адреса отправителя в настройках отправки почты.
-u : Определяет сокращенния, аналог опции «mail -f /var/spool/mail/UserID».
Установка утилиты mail в Unix/Linux
Для того чтобы установить утилиту mail на CentOS/Fedora/RedHat, используйте:
Для того чтобы установить утилиту mail на Debian/Mint, используйте:
Теперь вы должны иметь команду mail, и можно приступать к работе.
Команды mail/mailx в примера на Unix/Linux
В своей статье «Команды mail/mailx в примера на Unix/Linux» я расскажу как пользоваться утилитой mail в ОС Unix/Linux. Приведу наглядные примеры использования данной утилиты.
Чтобы запустить программу «mail» и вывести список сообщений в почтовом ящике, выполните:
Команда mail показывает количество сообщений в ящике системы. Затем почтовая система отображает подсказку почтового ящика (?), ожидая ввода.
Когда вы видите эту строку, то нужно ввести субкоманду, чтобы увидеть список подкоманд, нужно нажать (?):
Данная команда (?) покажет все субкоманды для Mail.
Отправка электронной почты пользователю:
В команде «echo» задается некоторый текст для отправки по электронной почте.
Опция «-s» используется для указания темы для письма. Собственно, команда mail отправит емейл пользователю send_to_some@email.com. Можно обойтись и без команды echo, тогда команда будет выглядеть следующим образом:
В этом примере вы тогда, будите вводить в сообщении и чтобы остановить просто введите точку следующим образом (.):
Если вы хотите отправить письмо нескольким пользователям, то просто добавить емейл через пробел. Это будет выглядеть следующим образом:
Отправка содержимого текстового файла
3 thoughts on “ Команды mail/mailx в примера на Unix/Linux ”
Не подскажете, как настроить на свой почтовый адрес?
Установить и настроить свой почтовый сервер. Какой взять, — это на любителя. Я предпочитаю — postfix + dovecot. Настройку данной связки я опубликовывал тут: http://linux-notes.org/ustanovka-pochtovogo-servera-postfix-dovecot-i-squirrelmail-v-centos-redhat-fedora/
Если у меня все письма в первый экран не влазят, как увидеть следующую страницу списка?
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Источник
изменить кодировку тела письма в mail
Снова всем привет. Для отправки сообщений на почту использую команду mail типа так:
echo «Текст письма»
mail -s «test» user@domain.com
вот так работает через костыль
echo «Текст письма»
echo $TELO >> /root/telo
iconv -f utf8 -t KOI8-R /root/telo -o /root/telo.koi8r
mail -s «test» user@domain.com ( 15.05.12 20:23:39 )
Зачем read, если программы всё равно читают всё с stdin?
iconv -t koi8-r | mail -s «test» user@domain.com
данный кусок используется в скрипте фаервола. когда мои коллеги меняют настройки фаервола они должны написать почему его изменили, тоесть идет использования комманды read затем этот тект передается на почту и все как бы вкурсе что в конторе происходит )))
че то вот такая конструкция iconv -t koi8-r | mail -s «test» user@domain.com не работает
Чтобы клиент правильно показывал кодировку, если не умеет нормально определять, нужно её указать. Самые простое, указать в хедере (в твоём случае utf8) и эта кодировка будет применяться для всего сообщения и хедеров, если не указано иное:
Content-Type: text/plain; charset=UTF-8
и по желанию для совсем древних клиентов
Content-Transfer-Encoding: 8bit
echo «Тело: кириллица» |mail -a «Content-Type: text/plain; charset=UTF-8» -s «Заголовок: кириллица» user@mail
как именно не работает?
после того как прописал
mail -a «Content-Type: text/plain; charset=UTF-8» -s «TEMA PISMA Кирилица» user@domain.com ( 15.05.12 21:07:34 )
в mail нужно пайпом посылать. тебе выше написали же.
что еще за пайп? причем он? как я понял mail параметр -a тупо не понимает
а пайп это типа echo «превед как дила» | grep дила тоесть когда вторая команда продолжает работать с теме данными что выдала первая.
read читает строку с stdin и записывает в переменную. iconv без указания имени файла тоже читает stdin (и пишет на stdout). mail тоже читает stdin, иначе бы Вы не смогли воспользоваться конструкцией « ★★★★★ ( 15.05.12 21:49:40 )
вот таким способом получилось существенно сократить размер скрипта и сделать его намного красивей и приятней
echo $TELO | iconv -t KOI8-R | mail -s «TEMA PISMA Кирилица» user@domain.com
тело письма приходит кириллицей а вот тема нет (((
данный кусок используется в скрипте фаервола. когда мои коллеги меняют настройки фаервола они должны написать почему его изменили, тоесть идет использования комманды read затем этот тект передается на почту и все как бы вкурсе что в конторе происходит )))
а не лучше использовать DVCS в таком случае?
Команда mail понимает -a с 2008года официально, о чём написано в мане. у тебя там busybox или какая-то некрофилия?
DVCS незнаю как настраивать да и не думаю что для такой мелкой задачи надо поднимать такую систему
centos 5.8 x86_64
Однако 😉
или обновляй, или осваивай другие утилиты, или напиши на perl|python
даж не могу посматреть какой он версии ))) видно древний буду гуглить как обовить
yum provides *bin/mail
mailx-8.1.1-44.2.2.x86_64 : Программа /bin/mail для отправки простых почтовых сообщений.
ИМХО, дело не в кодировке, а в том что ты её не указываешь да ещё и шлёшь голый 8-битный текст, что вообще говоря некорректно.
Кодируй в base64 или quoted printable. Я бы сделал на perl, но наверняка есть готовые утилиты
svnadmin create /var/svn/configs
Если не использовать кодирование, то письмо формируется достаточно просто. Поэтому, ИМХО, раз уж всё одно есть скрипт, формировать в нём письмо полностью, со всеми заголовками, включая Subject и Content-Type: text/plain; charset=UTF-8. Это не так сложно, зато такое письмо можно скормить команде sendmail напрямую, не заморачиваясь на mail.
Просто, допустим, в CentOS 6 используется Heirloom mailx (previously known as nail), у которого опция -a аттачит файл, а не дополнительный заголовок.
echo $TELO | iconv -t KOI8-R | mail -s «TEMA PISMA Кирилица» user@domain.com
тело письма приходит кириллицей а вот тема нет (((
subj=`echo TEMA PISMA Кириллица | iconv -t KOI8-R`; echo $TELO | iconv -t KOI8-R | mail -s «$subj» user@domain.com
spunky спасибо )))) работает ))))
Вообще всем спасибо! Очень помогли.
Мораль темы такова что утилита mail в centos 5.8 не умеет указывать свойства заголовков письма (Content-Type)
Выход либо использовать команды кодировки iconv либо использовать другую утилиту например nail
Источник
Ошибка в теме со специальными символами при отправке электронной почты SMTP через openssl и s_client
У меня есть сценарий bash в Linux для отправки электронной почты. Я использую SMTP от openssl и s_client.
Он многоязычный, поэтому иногда есть специальные символы (è, à . ), которые правильно отображаются в теле, но не в теме для любых Microsoft (Outlook, Hotmail . ).
Использование openssl
Я использую следующую команду:
openssl s_client -crlf -quiet -starttls smtp -connect :
— это простой текстовый файл, который содержит протокол соединения и данные для электронной почты, как показано ниже.
Если я отправлю его на Gmail или любой другой, отличный от Microsoft (Outloik, Hotmail), тема и текст будут правильными. Но когда квитанция работает с Hotmail или Outlook, специальные символы неправильно декодируются как Ã или другие.
Вывод команды следующий:
Может 250-8BITMIME в таком случае как его поменять? Я пробовал добавить -utf8, но это не работает.
Использование mailx и postfix
Я установил пакет mailutils и настроил постфикс. Добавление смарт-хоста в relayhost и настройка inet_interfaces = loopback-only
Я отправил электронное письмо с помощью следующей команды:
echo «Some text with special characters è à» | mailx -s «From: Some text with special characters è à» -a «Sender » some_email@example.com
Я получаю сообщение об ошибке из-за UTF8 от smarthost:
status=bounced (SMTPUTF8 is required, but was not offered by host
Я добавил в постфикс параметр, чтобы избежать этой ошибки smtputf8_enable = no
Если я выполняю последнюю почтовую команду для отправки электронного письма, электронное письмо отправляется, но специальные символы неправильно напечатаны в электронных письмах Microsoft, но верны в Gmail.
В качестве обходного пути я создал ошибку с телом, которое также содержит специальные символы. Отправляю как:
mailx -s «Some text with special characters è à» -a «From: Sender » some_email@example.com
Это электронное письмо отображается со специальными символами в правильном виде для тела во всех учетных записях электронной почты, но тема все еще неверна в учетных записях Microsoft.
Некоторые подсказки о том, как заставить тему также печататься правильным способом для электронных писем Microsoft на основе?
1 ответ
Здесь есть что обсудить:
- Если все задействованные системы не поддерживают расширение SMTPUTF8 , вы не можете использовать UTF-8 в поля заголовка.
- Расширение 8BITMIME указывает только на то, что 8-битный контент (например, UTF-8 , тогда как ASCII — это только 7-битное содержимое) сохраняется в теле. Как клиент, вы указываете, что отправляете 8-битное тело с MAIL FROM: BODY=8BITMIME , как только сервер указал, что он поддерживает 8BITMIME в своем ответе на вашу команду EHLO .
- Если все задействованные серверы поддерживают 8BITMIME , вы должны пометить свое тело как таковое для принимающего почтового клиента с помощью заголовков MIME-Version: 1.0 , Content-Transfer-Encoding: 8bit и Content-Type: text/plain; charset=utf-8 . Если не все поддерживают 8BITMIME , вы должны использовать <
>. - Поскольку SMTPUTF8 широко не поддерживается, вам необходимо кодировать не-ASCII с помощью Кодировка Encoded-Word в соответствии с RFC 2047. Например, тема ¡Buenos días! может быть закодирована как =?ISO-8859-1?Q?=A1Buenos_d=EDas!?= .
- RFC 5321 требует наличия угловых скобок вокруг адреса в <
> и RCPT TO команды. Ваш пример должен быть MAIL FROM: и RCPT TO: . - После STARTTLS для клиента и сервера будут восстановлены исходные государственный. Как клиент, вы должны отправить другую команду EHLO , на которую сервер может ответить другим списком расширений, чем до подтверждения TLS.
- Не все серверы поддерживают PIPELINING , и даже если они это сделают, вам следует дождаться начальное приветствие перед отправкой любой команды и дождитесь ответа сервера на команды EHLO и DATA , прежде чем продолжить. То, что вы делаете, может работать, но несоблюдение стандарта RFC можно использовать для фильтрации спама .
- Согласно RFC 5322, Date является обязательным полем заголовка.
Источник