From b43147612face13a481eb01f79e43c753d10b34f Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Fri, 10 Jun 2022 02:28:18 -0400 Subject: send email with postmark --- index.js | 21 ++++++++ package.json | 1 + pnpm-lock.yaml | 149 +++++++++++++++++++++++++++++++++++++++++++++++++++------ 3 files changed, 156 insertions(+), 15 deletions(-) diff --git a/index.js b/index.js index 07576f11..3e0cd436 100644 --- a/index.js +++ b/index.js @@ -109,6 +109,27 @@ app.post("/email", async (req, res) => { let file = persist("data/emails.json"); file.emails = [...file.emails, req.body]; res.send({ ok: true }); + + try { + // Require: + var postmark = require("postmark"); + + // Send an email: + var client = new postmark.ServerClient( + config.postmark + ); + + client.sendEmail({ + From: "adam@coinos.io", + To: "adam@coinos.io", + Subject: "Email Signup", + HtmlBody: JSON.stringify(req.body), + TextBody: JSON.stringify(req.body), + MessageStream: "outbound" + }); + } catch(e) { + console.log("problem sending email", e); + } } catch (e) { console.log(e); } diff --git a/package.json b/package.json index 40f96ae3..070f9618 100644 --- a/package.json +++ b/package.json @@ -52,6 +52,7 @@ "pino": "^6.13.2", "pino-pretty": "^7.0.0", "pm2": "^5.2.0", + "postmark": "^3.0.11", "query-string": "^6.13.1", "sequelize": "^5.21.3", "sqlite3": "^5.0.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2f5e0809..bd05d57d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: 5.3 +lockfileVersion: 5.4 specifiers: '@asoltys/bitcoin-core': ^3.0.7 @@ -44,6 +44,7 @@ specifiers: pino: ^6.13.2 pino-pretty: ^7.0.0 pm2: ^5.2.0 + postmark: ^3.0.11 prettier: ^1.18.2 query-string: ^6.13.1 sequelize: ^5.21.3 @@ -80,7 +81,7 @@ dependencies: http-proxy-middleware: 0.20.0 imap: 0.8.19 jsonwebtoken: 8.5.1 - knex: 0.95.11_305ac8a2f3555d00db92ee05fbd9623c + knex: 0.95.11_gbnmrixtkvoqbw4s5yc7xwlchq lightning: 3.5.0 liquidjs-lib: github.com/asoltys/liquidjs-lib/4a0bb0c4b38d327ec247d49e89219798fb0b28e2 lnurl: 0.19.0 @@ -99,6 +100,7 @@ dependencies: pino: 6.13.3 pino-pretty: 7.0.1 pm2: 5.2.0 + postmark: 3.0.11 query-string: 6.14.1 sequelize: 5.22.4 sqlite3: 5.0.2 @@ -428,6 +430,12 @@ packages: pretty-format: 27.5.1 dev: false + /@types/keyv/3.1.4: + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + dependencies: + '@types/node': 16.10.3 + dev: false + /@types/long/4.0.1: resolution: {integrity: sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==} dev: false @@ -477,6 +485,12 @@ packages: form-data: 2.5.1 dev: false + /@types/responselike/1.0.0: + resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} + dependencies: + '@types/node': 16.10.3 + dev: false + /@types/serve-static/1.13.10: resolution: {integrity: sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==} dependencies: @@ -569,7 +583,7 @@ packages: dev: false /ansi-regex/2.1.1: - resolution: {integrity: sha1-w7M6te42DYbg5ijwRorn7yfWVN8=} + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} engines: {node: '>=0.10.0'} dev: false @@ -749,6 +763,14 @@ packages: - debug dev: false + /axios/0.25.0: + resolution: {integrity: sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==} + dependencies: + follow-redirects: 1.15.1 + transitivePeerDependencies: + - debug + dev: false + /balanced-match/1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: false @@ -840,7 +862,7 @@ packages: dev: false /bip66/1.1.5: - resolution: {integrity: sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI=} + resolution: {integrity: sha512-nemMHz95EmS38a26XbbdxIYj5csHd3RMP3H5bwQknX0WYHF01qhpufP42mLOwVICuH2JmhIhXiWs89MfUGL7Xw==} dependencies: safe-buffer: 5.2.1 dev: false @@ -955,6 +977,8 @@ packages: qs: 6.7.0 raw-body: 2.4.0 type-is: 1.6.18 + transitivePeerDependencies: + - supports-color dev: false /bolt07/1.7.3: @@ -1246,7 +1270,7 @@ packages: dev: false /color-name/1.1.3: - resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} dev: false /color-name/1.1.4: @@ -1300,6 +1324,8 @@ packages: on-headers: 1.0.2 safe-buffer: 5.1.2 vary: 1.1.2 + transitivePeerDependencies: + - supports-color dev: false /concat-map/0.0.1: @@ -1454,20 +1480,59 @@ packages: /debug/2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.0.0 dev: false + /debug/2.6.9_supports-color@5.5.0: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + supports-color: 5.5.0 + dev: false + /debug/3.1.0: resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.0.0 dev: false /debug/3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: false + + /debug/3.2.7_supports-color@5.5.0: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.1.3 + supports-color: 5.5.0 dev: false /debug/4.3.2: @@ -1799,6 +1864,8 @@ packages: parseurl: 1.3.3 safe-buffer: 5.2.1 uid-safe: 2.1.5 + transitivePeerDependencies: + - supports-color dev: false /express/4.17.1: @@ -1835,6 +1902,8 @@ packages: type-is: 1.6.18 utils-merge: 1.0.1 vary: 1.1.2 + transitivePeerDependencies: + - supports-color dev: false /extend/3.0.2: @@ -1919,6 +1988,8 @@ packages: parseurl: 1.3.3 statuses: 1.5.0 unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color dev: false /flatstr/1.0.12: @@ -1947,6 +2018,16 @@ packages: debug: 4.3.2 dev: false + /follow-redirects/1.15.1: + resolution: {integrity: sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: false + /forever-agent/0.6.1: resolution: {integrity: sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=} dev: false @@ -2083,6 +2164,8 @@ packages: file-uri-to-path: 1.0.0 ftp: 0.3.10 readable-stream: 2.3.7 + transitivePeerDependencies: + - supports-color dev: false /get-uri/3.0.2: @@ -2109,8 +2192,15 @@ packages: assert-plus: 1.0.0 dev: false - /git-node-fs/1.0.0: + /git-node-fs/1.0.0_js-git@0.7.8: resolution: {integrity: sha1-SbIV4kLr5Dqkx1Ybu6SZUhdSCA8=} + peerDependencies: + js-git: ^0.7.8 + peerDependenciesMeta: + js-git: + optional: true + dependencies: + js-git: 0.7.8 dev: false /git-sha1/0.1.2: @@ -2148,6 +2238,8 @@ packages: dependencies: '@sindresorhus/is': 0.14.0 '@szmarczak/http-timer': 1.1.2 + '@types/keyv': 3.1.4 + '@types/responselike': 1.0.0 cacheable-request: 6.1.0 decompress-response: 3.3.0 duplexer3: 0.1.4 @@ -2261,6 +2353,8 @@ packages: dependencies: agent-base: 4.3.0 debug: 3.1.0 + transitivePeerDependencies: + - supports-color dev: false /http-proxy-agent/4.0.1: @@ -2291,7 +2385,7 @@ packages: engines: {node: '>=8.0.0'} dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.14.4 + follow-redirects: 1.15.1 requires-port: 1.0.0 transitivePeerDependencies: - debug @@ -2319,6 +2413,8 @@ packages: dependencies: agent-base: 4.3.0 debug: 3.2.7 + transitivePeerDependencies: + - supports-color dev: false /https-proxy-agent/5.0.0: @@ -2678,7 +2774,7 @@ packages: json-buffer: 3.0.0 dev: false - /knex/0.95.11_305ac8a2f3555d00db92ee05fbd9623c: + /knex/0.95.11_gbnmrixtkvoqbw4s5yc7xwlchq: resolution: {integrity: sha512-grDetD91O8VoQVCFqeWTgkzdq5406W6rggF/lK1hHuwzmjDs/0m9KxyncGdZbklTi7aUgHvw3+Cfy4x7FvpdaQ==} engines: {node: '>=10'} hasBin: true @@ -2768,6 +2864,7 @@ packages: psbt: 1.1.10 transitivePeerDependencies: - bignumber.js + - supports-color dev: false /lnurl/0.19.0: @@ -2918,7 +3015,7 @@ packages: dev: false /merkle-lib/2.0.10: - resolution: {integrity: sha1-grjbrnXieneFOItz+ddyXQ9vMyY=} + resolution: {integrity: sha512-XrNQvUbn1DL5hKNe46Ccs+Tu3/PYOlrcZILuGUhb95oKBPjc/nmIC8D462PQkipVDGKRvwhn+QFg2cCdIvmDJA==} dev: false /methods/1.1.2: @@ -3112,6 +3209,8 @@ packages: debug: 3.2.7 iconv-lite: 0.4.24 sax: 1.2.4 + transitivePeerDependencies: + - supports-color dev: false /needle/2.9.1: @@ -3122,6 +3221,8 @@ packages: debug: 3.2.7 iconv-lite: 0.4.24 sax: 1.2.4 + transitivePeerDependencies: + - supports-color dev: false /negotiator/0.6.2: @@ -3195,6 +3296,8 @@ packages: rimraf: 2.7.1 semver: 5.7.1 tar: 4.4.19 + transitivePeerDependencies: + - supports-color dev: false /nodemon/2.0.13: @@ -3204,14 +3307,14 @@ packages: requiresBuild: true dependencies: chokidar: 3.5.2 - debug: 3.2.7 + debug: 3.2.7_supports-color@5.5.0 ignore-by-default: 1.0.1 minimatch: 3.0.4 pstree.remy: 1.1.8 semver: 5.7.1 supports-color: 5.5.0 touch: 3.1.0 - undefsafe: 2.0.3 + undefsafe: 2.0.3_supports-color@5.5.0 update-notifier: 5.1.0 dev: false @@ -3681,6 +3784,14 @@ packages: - utf-8-validate dev: false + /postmark/3.0.11: + resolution: {integrity: sha512-bbHoWt7PdeAKRpu55mzAxjE59N1264eiItDyPR2me3nsKFrS2YaDjJm6wA/z2wmBrchrcx+EWiKWWBzWUzcyFA==} + dependencies: + axios: 0.25.0 + transitivePeerDependencies: + - debug + dev: false + /prelude-ls/1.1.2: resolution: {integrity: sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=} engines: {node: '>= 0.8.0'} @@ -3834,7 +3945,7 @@ packages: dev: false /pushdata-bitcoin/1.0.1: - resolution: {integrity: sha1-FZMdPNlnreUiBvUjqnMxrvfUOvc=} + resolution: {integrity: sha512-hw7rcYTJRAl4olM8Owe8x0fBuJJ+WGbMhQuLWOXEMN3PxPCKQHRkhfL+XG0+iXUmSHjkMmb3Ba55Mt21cZc9kQ==} dependencies: bitcoin-ops: 1.4.1 dev: false @@ -4180,6 +4291,8 @@ packages: on-finished: 2.3.0 range-parser: 1.2.1 statuses: 1.5.0 + transitivePeerDependencies: + - supports-color dev: false /seq-queue/0.0.5: @@ -4222,6 +4335,8 @@ packages: escape-html: 1.0.3 parseurl: 1.3.3 send: 0.17.1 + transitivePeerDependencies: + - supports-color dev: false /set-blocking/2.0.0: @@ -4354,6 +4469,8 @@ packages: node-pre-gyp: 0.11.0 optionalDependencies: node-gyp: 3.8.0 + transitivePeerDependencies: + - supports-color dev: false /sqlstring/2.3.1: @@ -4679,10 +4796,12 @@ packages: engines: {node: '>=14.0.0'} dev: false - /undefsafe/2.0.3: + /undefsafe/2.0.3_supports-color@5.5.0: resolution: {integrity: sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==} dependencies: - debug: 2.6.9 + debug: 2.6.9_supports-color@5.5.0 + transitivePeerDependencies: + - supports-color dev: false /underscore/1.13.1: @@ -4800,7 +4919,7 @@ packages: engines: {node: '>=4.0'} dependencies: async: 2.6.3 - git-node-fs: 1.0.0 + git-node-fs: 1.0.0_js-git@0.7.8 ini: 1.3.8 js-git: 0.7.8 dev: false -- cgit v1.2.3