Не могу понять почему парсер отдает ошибку connection.app is not a function Я же прямо указал константу в виде connection Код: try { const connection = imaps.connect(config) connection.app(message.toString(), {mailbox: 'Draft'}) connection.end() } catch(e) { results.status = e.message; } Что я могу делать не так?
Скорей всего, connection - это метод какого-то модуля, возможно модуль не установлен, возможно неправильно подключен Надо на весь код смотреть
Код: const imaps = require('imap-simple'); class Parser { constructor() { this.defaultConf = { version: '0.1.40', results: { flat: [ ['name', 'name'], ] }, results_format: '$status\\n', parsecodes: { 200: 1, }, max_size: 200 * 1024, }; } *parse(set, results) { this.logger.put("Starting..."); const config = { imap: { user: "[email protected]", password: "password", host: "imap.mail.ru", port: 993, tls: true, authTimeout: 30000, tlsOptions: { rejectUnauthorized: false }, keepalive: false } }; const message = `Content-Type: text/html; charset=UTF-8 Mime-Version: 1.0 To: <[email protected]> From: "Test" <[email protected]> Subject: test subject test body `; const connection = imaps.connect(config) try { connection.append(message.toString(), {mailbox: 'Inbox'}) connection.end() } catch(e) { results.status = e.message; } results.success = 1; return results; } }
Надо проверять правильность конфига и есть ли у mail.ru поддержка imap сервера и т.д у меня, с Вашими настройками вот такая ошибка
Конечно есть поддержка imap )) Ну так вставьте валидную почту mail.ru и всё будет отображаться без вашей ошибки.
вот с почтой и паролем которые Yandex::register регистрирует можете написать в чат с саппортом, проверю на Вашей валидной почте это проблема не с а-парсером, а с настройками модуля imap-simple-with-socks т.к в начале передается конфиг, а потом возвращается connection при ошибке в config, метод модуля не доступный
Код: const imaps = require('imap-simple'); let connection; class Parser { constructor() { this.defaultConf = { version: '0.1.45', results: { flat: [ ['name', 'name'], ] }, results_format: '$status\\n', parsecodes: { 200: 1, }, max_size: 200 * 1024, }; } async init() { const config = { imap: { user: "", password: "", host: "imap.mail.ru", port: 993, tls: true, authTimeout: 30000, tlsOptions: { rejectUnauthorized: false }, keepalive: false } }; connection = await imaps.connect(config); } async destroy() { if (connection) await connection.end() } async *parse(set, results) { this.logger.put("Starting..."); const message = `Content-Type: text/html; charset=UTF-8 Mime-Version: 1.0 To: <[email protected]> From: "Test" <[email protected]> Subject: test subject test body `; try { await connection.append(message.toString(), { mailbox: 'Inbox' }) results.success = 1; } catch (e) { this.logger.put(e.message) results.success = 0; } return results; } } Добавил код для примера т.к connection возвращает promise, для удобства работы с ним, лучше использовать async/await + инициализацию connect лучше делать в методе init() т.к он выполняется при старте задания в методе destroy() можно закрыть соединение, он выполняется по завершению задания - этот метод доступен с версии 1.2.890
Мне нужно отлавливать ошибку при соединении, иначе все труды напрасны. Без try catch я и так знаю как сделать.