Advertisement
Guest User

Untitled

a guest
May 23rd, 2017
901
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.45 KB | None | 0 0
  1. const Imap = require('imap');
  2. let imap = new Imap({
  3. user: 'user@mail.ru',
  4. password: 'pass',
  5. host: 'imap.mail.ru',
  6. port: 993,
  7. tls: true
  8. });
  9.  
  10. function imapConnect(imap) {
  11.  
  12. return new Promise((resolve, reject) => {
  13. console.log('Connecting');
  14. imap.connect();
  15. imap.once('ready', resolve);
  16. });
  17.  
  18. }
  19.  
  20. function openInbox(name) {
  21.  
  22. return new Promise((resolve, reject) => {
  23. console.log('Open inbox');
  24. imap.openBox(name, true, resolve);
  25. });
  26. }
  27.  
  28. function getMessage(msgEE) {
  29.  
  30. return new Promise((resolve, reject) => {
  31.  
  32. let msgObj = {};
  33. msgEE.on('body', async (stream, info) => {
  34. msgObj[info.which] = {
  35. info,
  36. "data": await getStreamData(stream)
  37. };
  38. });
  39. msgEE.once('end', () => resolve(msgObj));
  40. });
  41.  
  42. }
  43.  
  44. function getStreamData(stream) {
  45.  
  46. return new Promise((resolve, reject) => {
  47. let buffer = '', count = 0;
  48. stream.on('data', function(chunk) {
  49. count += chunk.length;
  50. buffer += decode(chunk);
  51. });
  52. stream.once('end', () => resolve(buffer));
  53. });
  54.  
  55. }
  56.  
  57. async function run() {
  58.  
  59. await imapConnect(imap);
  60. await openInbox('INBOX/заявки');
  61.  
  62. var f = imap.seq.fetch('1:10', {
  63. bodies: ['HEADER.FIELDS (FROM)','TEXT'],
  64. struct: false
  65. });
  66.  
  67. f.on('message', async (msgEE, seqno) => {
  68.  
  69. let msg = await getMessage(msgEE);
  70. console.log(msg);
  71.  
  72. });
  73.  
  74. }
  75.  
  76. run();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement