Advertisement
Guest User

Untitled

a guest
Sep 23rd, 2019
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.54 KB | None | 0 0
  1. //READ, MARKSEEN, DOWNLOAD ATTACHMENT ON MAIL WITH NODEJS
  2. //HOW TO USE
  3. // INSTALL : NODEJS. NPM
  4. // CREATE DIRECTORY AND INSTALL PACKAGE NODEJS
  5. // npm install imap-simple
  6. // npm install simple-excel-to-json
  7. // RUN SCRIPT : node your_script.js
  8.  
  9. const fs = require('fs')
  10. var imaps = require('imap-simple');
  11. var Parser = require('simple-excel-to-json');
  12. var parser = new Parser.XlsParser()
  13.  
  14. var config = {
  15. imap: {
  16. user: 'account123@gmail.com',
  17. password: 'xxx',
  18. host: 'imap.gmail.com',
  19. port: 993,
  20. tls: true,
  21. authTimeout: 3000
  22. }
  23. };
  24.  
  25. imaps.connect(config).then(function (connection) {
  26.  
  27. connection.openBox('INBOX').then(function () {
  28.  
  29. var searchCriteria = ['UNSEEN', ['SUBJECT', 'EMPAS'], ['FROM', 'sender123@gmail.com']];
  30. var fetchOptions = {
  31. bodies: ['HEADER'],
  32. struct: true,
  33. markSeen: false
  34. };
  35.  
  36. // retrieve only the headers of the messages
  37. return connection.search(searchCriteria, fetchOptions);
  38. }).then(function (messages) {
  39.  
  40. console.log('messages-----',messages)
  41. var attachments = [];
  42.  
  43. messages.forEach(function (message) {
  44. var parts = imaps.getParts(message.attributes.struct);
  45. var x = imaps.getParts(message.parts);
  46. // console.log(x)
  47. attachments = attachments.concat(parts.filter(function (part) {
  48. return part.disposition && part.disposition.type.toUpperCase() === 'ATTACHMENT';
  49. }).map(function (part) {
  50. // retrieve the attachments only of the messages with attachments
  51. return connection.getPartData(message, part)
  52. .then(function (partData) {
  53. return {
  54. filename: part.disposition.params.filename,
  55. data: partData
  56. };
  57. });
  58. }));
  59. });
  60.  
  61. return Promise.all(attachments);
  62. }).then(function (attachments) {
  63. var dir = 'files';
  64. console.log('create directory files')
  65. if (!fs.existsSync(dir)){
  66. fs.mkdirSync(dir);
  67. }
  68. for (let i = 0; i < attachments.length; i++) {
  69. const el = attachments[i];
  70. var chk = el.data
  71.  
  72. fs.writeFileSync("files/test.xlsx", chk, function(err) {
  73. if(err) {
  74. return console.log(err);
  75. }
  76. });
  77.  
  78. var doc = parser.parseXls2Json('files/test.xlsx')
  79. console.log('-----doc----', doc)
  80. }
  81. connection.end()
  82. });
  83. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement