imap-extract-folded-encoded-filename.json 5.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. {
  2. "name": "imap-extract-folded-encoded-filename",
  3. "description": "An attachment whose filename is an RFC 2047 encoded word folded across two lines must still be found. Reproduces the Email OCR failure of 2026-09-04: a 41 KB PDF named \"Sarkanyok parzasi es etkezesi szokasaik.pdf\" (with accents) was parsed with its name truncated at the fold, so it did not end in .pdf, the extension filter rejected it, and the workflow took its no-attachments branch and completed - no reply, no error, nothing logged. Any attachment with a non-ASCII name had always been lost this way. The extension filter is the point of the test: without decoding, the name ends in '?=' and the count is 0.",
  4. "nodes": [
  5. {
  6. "id": "n1",
  7. "name": "Trigger",
  8. "type": "click-trigger",
  9. "position": {
  10. "x": 0,
  11. "y": 0
  12. },
  13. "config": {}
  14. },
  15. {
  16. "id": "n2",
  17. "name": "Mime",
  18. "type": "code",
  19. "position": {
  20. "x": 0,
  21. "y": 100
  22. },
  23. "config": {
  24. "code": "return { raw: \"From: someone@example.com\\r\\nTo: noreply@shopcall.ai\\r\\nSubject: teszt\\r\\nMIME-Version: 1.0\\r\\nContent-Type: multipart/mixed; boundary=\\\"OUTER\\\"\\r\\n\\r\\n--OUTER\\r\\nContent-Type: text/plain; charset=utf-8\\r\\n\\r\\nhello\\r\\n--OUTER\\r\\nContent-Transfer-Encoding: base64\\r\\nContent-Type: application/pdf;\\r\\n name=\\\"=?UTF-8?Q?S=C3=A1rk=C3=A1nyok_p=C3=A1rz=C3=A1si_=C3=A9s_=C3=A9tkez?=\\r\\n =?UTF-8?Q?=C3=A9si_szok=C3=A1saik=2Epdf?=\\\"\\r\\nContent-Disposition: attachment;\\r\\n filename=\\\"=?UTF-8?Q?S=C3=A1rk=C3=A1nyok_p=C3=A1rz=C3=A1si_=C3=A9s_=C3=A9tkez?=\\r\\n =?UTF-8?Q?=C3=A9si_szok=C3=A1saik=2Epdf?=\\\"\\r\\n\\r\\nJVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZz4+ZW5kb2JqCnRyYWlsZXI8PC9Sb290IDEg\\r\\nMCBSPj4KJSVFT0YKeHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\\r\\neHh4eHh4eHh4eHh4eHh4eHg=\\r\\n--OUTER--\\r\\n\" };"
  25. }
  26. },
  27. {
  28. "id": "n3",
  29. "name": "Extract",
  30. "type": "imap-extract-attachments",
  31. "position": {
  32. "x": 0,
  33. "y": 200
  34. },
  35. "config": {
  36. "emailSource": "{{ data.result.raw }}",
  37. "filterExtensions": "pdf, jpg, jpeg, png",
  38. "filterMimeTypes": "application/pdf, image/*",
  39. "maxSize": 0,
  40. "deduplicateByHash": false,
  41. "storeInDatabase": false,
  42. "binaryStoragePath": "/tmp/smartbotic-extract-test"
  43. }
  44. }
  45. ],
  46. "connections": [
  47. {
  48. "sourceNodeId": "n1",
  49. "sourceOutput": "main",
  50. "targetNodeId": "n2",
  51. "targetInput": "data"
  52. },
  53. {
  54. "sourceNodeId": "n2",
  55. "sourceOutput": "main",
  56. "targetNodeId": "n3",
  57. "targetInput": "data"
  58. }
  59. ],
  60. "expect": {
  61. "n3": {
  62. "status": "completed",
  63. "output": {
  64. "count": 1,
  65. "attachments": [
  66. {
  67. "filename": "Sárkányok párzási és étkezési szokásaik.pdf",
  68. "mimeType": "application/pdf"
  69. }
  70. ]
  71. }
  72. }
  73. }
  74. }