@greggory.Гц вы можете добавить, что вы ищете, чтобы добавить его в существующий медиа-плеер, а какой в вашем вопросе, чтобы мы могли оставить более развернутые ответы? Спасибо! Но Jakuje, это два разных файлах конфигурации. Цитата из министра внутренних дел Великобритании файла такова: ` если все критерии соответствуют линии удовлетворены, ключевые слова в следующих строках переопределяют параметры в глобальной секции конфигурационного файла, пока очередной матч строки или конца файла.` То есть, глобальная конфигурация будет использоваться для не матч, а матч * - это лишнее. Если я пошлю события (ноты, СЦК, ручной воспроизводить sysex дампы) от аппаратного синтезатора, процесс будет по-прежнему читать их нормально. Так что проблема, вероятно, с отправкой запроса..

Похоже, вы говорите о стандарте RFC 2047: кодировки MIME для электронной почты заголовки. Далее РЛК с тех пор дополненной этот RFC, чтобы позволить более наборов символов и дополнительно включать спецификацию языка.

Потому что первоначальный адрес электронной почты и спецификации MIME включали предположение, что заголовки будут содержать только строго нас-ASCII, кодирование заголовка-это совершенно отдельная тема от кодирования MIME сообщения.

Формат:

=? <кодировки> [язык] ? <кодировка-письмо> ? <текст> ?=

<кодировка-письмо> будет либо Q для печати кавычках, или B для base64 кодирования. Если сообщение представляется совершенно тарабарском языке, я предполагаю, что вы видите в base64. Набор символов в имени и буквы кодировки не зависят от регистра.

Так что вы можете увидеть:

Тема: =?в UTF-8?б?SWYgeW91IGNhbiByZWFkIHRoaXMsIHlvdsb1bmrlcnn0b29kihrozsblegftcgxllgo=?=

Или с идентификатором язык добавлено:

Тема: =?кодировка UTF-8*Ан?б?SWYgeW91IGNhbiByZWFkIHRoaXMsIHlvdsb1bmrlcnn0b29kihrozsblegftcgxllgo=?=

Руководство пример расшифровки:

$ Эхо "SWYgeW91IGNhbiByZWFkIHRoaXMsIHlvdsb1bmrlcnn0b29kihrozsblegftcgxllgo=" | из base64 -д
Если вы можете прочитать это, вы поняли пример.

Тот факт, что существующие словарю сценарий включает в себя принуждение маркировки кодировок кодировка ISO-8859-1, ASCII США и неизвестных-8 бит , как в windows-1251 означает, что ваша реальная проблема может быть так называемого кодирования. Другими словами:

  • старый почтовый клиент выбрасывает в windows-1251 кириллица без маркировки их как таковые, возможно, также в заголовках
  • по дороге, электронное письмо проходит через почтовый сервер, либо не должным образом объявить о том, что он может обрабатывать 8-битные кодировки почте чисто, или ревнует о принудительной маркировки всех кодировок, отличных от обычного ASCII США.

В этой ситуации, МТА должен для кодирования и маркировки 8-битные символы, чтобы получить почту передавали. Но если 8-битные символы этикетки, только исходный почтовый клиент точно знает, что персонаж на самом деле набор.

Проблема о маркировке наборов символов после факта является то, что определение кодировки может потребовать от человека на уровне понимания о том, содержимого имеет смысл трактовать как определенный набор символов или нет. Так что вы будете в конечном итоге с помощью эвристики, которая иногда будет неправильно.

Например, если вы получили письмо, что на самом деле правильно закодированы в кодировке ISO-8859-1, ваш скрипт будет mislabel это как с windows-1251, в результате чего все скандинавские/западно-европейская ударением персонажи, которые появляются как случайные номера и бессмысленные кириллицы. Но если это встречается реже, чем получать в windows-1251 кодировке сообщения ошибочно считаются стандартом ISO-8859-1, это может быть ваш выбор, чтобы принять это риск и это нормально.

Я думаю, вам придется изучить проблемные сообщения, чтобы выяснить, как их тема: заголовки кодированы. Они:

  • простой немаркированный с windows-1251?
  • на самом деле действителен в base64-кодировке в UTF-8?
  • или в windows-1251 , которая была в base64-закодированных и неверно классифицированы как UTF-8?

К сожалению, по словарю и его компаньон formail может быть недостаточным для получения тема: заголовок в незакодированной форме. Они были никем не поддерживается с 2001 года, и даже их автор теперь предлагает выйти на что-то другое. Но если вы хотите продолжать использовать procmail и сейчас, вам потребуется что-то вроде этого сценария:

https://github.com/akkana/scripts/blob/master/decodemail.py

Я не сделал значительного для procmail сценариев в около 10 лет, поэтому пример может быть не так или там может быть лучшего способа сделать это. Но, возможно, это полезно в объяснении того, как проблема может быть решена...

Вам придется сначала декодировать содержимое на тему: заголовка и сохранить его в переменной:

:0 ч
SUBJDECODED=| decodemail.py тема:

:0 ч
SUBJWASRAW=| formail -xSubject: | перекодировать в windows-1251..в UTF-8

Для исправления ошибок кодирования, то вам, возможно, придется перекодировать кодировку от того, что он на самом деле в UTF-8 используется систему:

SUBJWASWIN1251=`Эхо "$SUBJDECODED" | перекодировать в windows-1251..кодировке UTF-8`

Если существует несколько возможных кодировок, возможно, придется создать несколько переменных, как это.

Тогда вы можете соответствовать любой версии темы:

:0
* SUBJWASRAW ?? ваш предмет-выражение-здесь
{
 # Вот тема была сырой ОС Windows-1251 без кодирования вообще.
 # Переменная перешла на допустимые символы UTF-8 используется эта система,
 # Итак, теперь заголовок можно переписать в полезной форме.
 # (В этом примере оставляет предмет в качестве сырья немаркированный формат UTF-8, который 
 # может или не может быть приемлемым для того, что вы используете, чтобы смотреть на ваш электронный адрес.
 # Но на современном документе RFC 6532 совместимых почтовых клиентов 
 # в системе, которая использует UTF-8 на протяжении фактически это может быть хорошо.)

 :0 ф
 | formail -я "Тема: $SUBJWASRAW"
}

:0
* SUBJWASWIN1251 ?? ваш предмет-выражение-здесь
{
 # регулярное выражение совпадает, поэтому мы знаем, что тема была windows-1251 
 # промаркировал как UTF-8. Исправить его.
 :0 ф
 | formail -я "Тема: $SUBJWASWIN1251"
}

:0
* SUBJDECODED ?? ваш предмет-выражение-здесь
{
 # регулярное выражение соответствует теме декодируется в соответствии с существующей метки
 # Итак, мы знаем, что он был надлежащим образом промаркирован. Но его еще нужно
 # быть переписана, как это может быть что-то другое, чем UTF-8.
 :0 ф
 | formail -я "Тема: $SUBJDECODED"
}

# Любые дополнительные правила должны быть в состоянии соответствовать на эту тему, как обычно.

Примечание: ваш-предмет-регулярное выражение-здесь регулярное выражение не должно включать ^тема:.* префикс, как переменные будут содержать только значения из предмет: заголовок.