Используя POP3.au3 (2.0.1) сохраняю письмо с сервера в файл вида имя.eml,
причем в функции сохранения изменил режим открытия файла с FO_UTF8_FULL на бинарный (иначе получалась каша, после изменения скрипт сохраняет файл ровно так же, как и почтовый клиент):
Notepad++ говорит мне, что файл в UTF-8;
если открыть его в почтовом клиенте, то все отлично читается
Затем открываю этот файл как FO_UTF8, FO_UTF8_NOBOM или FO_UTF8_FULL - разницы нет никакой
и начинаю делать первый поиск так:
где все отлично находится.
При этом паттрен задан в теле скрипта, который в Notepad++ определяется как UTF-8-BOM
Найденную в первом поиске строку я с помощью Encoding.au3 (1.7) конвертирую в несколько разных кодировок, загоняю в массив, затем содержимое массива поэлементно конвертирую в Base64 и добавляю к исходному массиву.
А затем (будем считать, что от отчаяния) я все содержимое полученного массива конвертирую в UTF-8 и добавляю к предыдущему массиву.
После чего пытаюсь поэлементно искать содержимое последнего массива во все еще открытом файле и не нахожу ничего, несмотря на то, что видуально один из элементов массива в файле присутствует.
Почему оно не отрабатывает?
Общий смысл всех мытарств - выгрузить в отдельный файл аттачи с определенными именами из *.eml
причем в функции сохранения изменил режим открытия файла с FO_UTF8_FULL на бинарный (иначе получалась каша, после изменения скрипт сохраняет файл ровно так же, как и почтовый клиент):
Код:
$hEML_File = FileOpen($sEML_FileFullPath, $FO_OVERWRITE + $FO_CREATEPATH + $FO_BINARY)
FileWrite($hEML_File, $sEMLContent)
Notepad++ говорит мне, что файл в UTF-8;
если открыть его в почтовом клиенте, то все отлично читается
Затем открываю этот файл как FO_UTF8, FO_UTF8_NOBOM или FO_UTF8_FULL - разницы нет никакой
и начинаю делать первый поиск так:
Код:
$temp = _subst_position_ldv($aStrings[$i], " Имя файла: ", "")
...
Func _subst_position_ldv($sString, $search_string_left, $delim_right)
$f_pos = StringInStr($sString, $search_string_left, 1, 1, 1)
...
где все отлично находится.
При этом паттрен задан в теле скрипта, который в Notepad++ определяется как UTF-8-BOM
Найденную в первом поиске строку я с помощью Encoding.au3 (1.7) конвертирую в несколько разных кодировок, загоняю в массив, затем содержимое массива поэлементно конвертирую в Base64 и добавляю к исходному массиву.
А затем (будем считать, что от отчаяния) я все содержимое полученного массива конвертирую в UTF-8 и добавляю к предыдущему массиву.
После чего пытаюсь поэлементно искать содержимое последнего массива во все еще открытом файле и не нахожу ничего, несмотря на то, что видуально один из элементов массива в файле присутствует.
Код:
$f_pos = StringInStr($sReadFile, $aPatterns[$j], 1, 1, 1)
Почему оно не отрабатывает?
Общий смысл всех мытарств - выгрузить в отдельный файл аттачи с определенными именами из *.eml