Linux mail utf 8

Кодировка 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 показывает количество сообщений в ящике системы. Затем почтовая система отображает подсказку почтового ящика (?), ожидая ввода.

Читайте также:  Microsoftfixit50195 msi для windows 10

Когда вы видите эту строку, то нужно ввести субкоманду, чтобы увидеть список подкоманд, нужно нажать (?):

Данная команда (?) покажет все субкоманды для 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 )

Читайте также:  Windows 10 версия redstone

вот таким способом получилось существенно сократить размер скрипта и сделать его намного красивей и приятней

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, специальные символы неправильно декодируются как Ã или другие.

Читайте также:  Команда которая включает все службы windows

Вывод команды следующий:

Может 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 является обязательным полем заголовка.

Источник

Оцените статью