Что добавить в msg.criteria для получения писем в узле электронной почты Node-RED?

У меня есть два потока, использующих узел node-red-node-email в Node-RED.

Первый использует предопределенное значение для получения всех писем (Критерии: Все). Он работает правильно и получает два электронных письма, которые у меня есть в моем почтовом ящике:

поток 1

Второй должен имитировать то же самое, но с указанием msg.criteria:

Я создал поток с узлом change, устанавливающим значение.

Информационная страница для модуля электронной почты ссылается на doc для другого модуля и не дает четкого примера, но я предположил, что должен добавить строковое значение [ ALL ]. Вот соответствующая часть модуля change:

"rules": [
    {
        "t": "set",
        "p": "criteria",
        "pt": "msg",
        "to": "[ 'ALL' ]",
        "tot": "str"
    }

В результате узел электронной почты изменяется на connecting, затем на fetching и остается в этом состоянии. Веб-сервер Node-RED некоторое время не отвечает.

поток 2

Я также попытался указать msg.criteria как объект JSON следующим образом (в результате я получаю "Invalid 'to' JSON property" при отладке):

"rules": [
    {
        "t": "set",
        "p": "criteria",
        "pt": "msg",
        "to": "[ 'ALL' ]",
        "tot": "json"
    }
],

или следующим образом (в результате у меня вообще нет ответа; узел электронной почты даже не переходит в состояние connecting):

"rules": [
    {
        "t": "set",
        "p": "criteria",
        "pt": "msg",
        "to": "{ [ 'ALL' ] }",
        "tot": "json"
    }
],

Какого типа должен быть msg.criteria и какие данные он должен содержать для получения всех писем (и, соответственно, других критериев)?


person Ionardi    schedule 09.02.2020    source источник
comment
Узел электронной почты ожидает, что msg.criteria будет строкой, а не JSON. Попробуйте использовать `['UNSEEN']` вместо [ 'ALL' ], тогда он должен просто возвращать новую почту, а не весь ваш почтовый ящик (который может быть огромным).   -  person hardillb    schedule 10.02.2020
comment
Спасибо за ваш комментарий. Итак, msg.criteria в моем первом примере была строкой, которая не сработала. Я использовал [ALL] здесь, чтобы избежать комментариев о [UNSEEN] получении только непрочитанных сообщений. Как вы можете видеть на первом скриншоте, в моем почтовом ящике есть два письма, так что это не проблема. Они выбираются с полем Criteria, установленным в All, но не выбираются с Criteria, установленным в - set from msg.criteria - и msg.criteria, установленным в ['ALL'].   -  person Ionardi    schedule 15.02.2020
comment
Хорошо, я вернулся и еще раз посмотрел на источник, предыдущий комментарий неверен. msg.criteria должен быть массивом JSON (бит, в котором внутренние версии преобразуются из строки в массив, очень тонкий). Проблема, которую вы видели, также очень тонкая и связана с типами кавычек в узле изменений.   -  person hardillb    schedule 15.02.2020


Ответы (1)


Как я упоминал во втором комментарии, это, скорее всего, связано с тем, как вы настраиваете узел изменений с массивом JSON.

Следующая конфигурация узла изменений работает должным образом.

введите здесь описание изображения

Обратите внимание, что ALL заключен в двойные кавычки, а не в одинарные. Это важно, поскольку узел Change выдает ошибку, когда установлены одинарные кавычки, и фактически не добавляет поле к объекту msg.

person hardillb    schedule 15.02.2020
comment
Ой, это безумие. Все документы, на которые есть ссылки, показывают [ 'ALL' ] и т. Д. В одинарных кавычках, однако для другой цели. Спасибо. - person Ionardi; 15.02.2020