Example code

This commit is contained in:
Helge-Mikael Nordgård 2025-01-08 23:33:51 +01:00
parent 34b03a79ce
commit ef94e5c9a0
4 changed files with 203 additions and 0 deletions

26
README.md Normal file
View File

@ -0,0 +1,26 @@
## Eksempel bruk av nodejs
Dette er en kodesnutt som jeg har testet og kontrollert fungerer i nodejs med mailgun. Du kan laste ned denne kodesnutten som en zip fil eller bruke git clone for å laste den ned på pc'en din, eller kopiere og lime inn koden her i wix prosjektet ditt.
### nodeJS
For å få nodejs til å fungere på din egen pc så du kan teste koden for deg selv, last ned node fra https://nodejs.org/en/download. Husk å kjør "npm update" fra kommandolinjen i katalogen du har lastet ned denne kodesnutten fra, så nodejs kan hente de nødvendige pakkene for bruk i eksempelet fra NPM.
### Konstanter
Det er satt opp en del variabler som du må endre i kodesnutten:
1. apiKey - endre 'api-key' til nøkkelen jeg sendte til deg pr. epost
2. mgDomain - la denne stå urørt. Det er domenet som brukes av mailgun
3. senderName - bytt ut 'Test Bruker' med avsendernavnet du ønsker å bruke
4. senderUserName - dette er brukernavnet i avsenderepostadressen før '@', bytt ut 'test' med ønsket brukernavn (dette kan være arbitrært, må ikke være en eksisterende epostadresse)
5. emailSubject - dette er emnet i eposten som sendes
### mg.messages.create()
Bytt ut verdiene:
* text
* html
i objektet man sender i det andre parameteret i funksjonen med ønskede verdier. Text er ren tekst (i tilfelle epostklienten til mottageren ikke støtter html) og html er markup med epostmeldingen i html format.

19
index.js Normal file
View File

@ -0,0 +1,19 @@
const formData = require('form-data');
const Mailgun = require('mailgun.js')
const mailgun = new Mailgun(formData);
const apiKey = process.env.MAILGUN_API_KEY || 'api-key';
const mgDomain = process.env.MG_DOMAIN || 'mg.mosseolets-venner.no';
const senderName = process.env.SENDER_NAME || 'Test Bruker';
const senderUserName = process.env.SENDER_USER || 'test';
const emailSubject = process.env.SUBJECT || 'Testing mailgun';
const mg = mailgun.client({username: 'api', key: apiKey, url: 'https://api.eu.mailgun.net'});
mg.messages.create(mgDomain, {
from: `${senderName} <${senderUserName}@${mgDomain}>`,
to: ["helge-mikael.nordgard@arcticsoftware.no"],
subject: emailSubject,
text: "Testing mailgun",
html: "<h1>Testing mailgun</h1>"
}).then(msg => console.log(msg)).catch(err => console.log(err));

142
package-lock.json generated Normal file
View File

@ -0,0 +1,142 @@
{
"name": "test",
"version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "test",
"version": "1.0.0",
"license": "ISC",
"dependencies": {
"axios": "^1.7.9",
"dotenv": "^16.4.7",
"mailgun.js": "^10.4.0"
}
},
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
"node_modules/axios": {
"version": "1.7.9",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz",
"integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==",
"dependencies": {
"follow-redirects": "^1.15.6",
"form-data": "^4.0.0",
"proxy-from-env": "^1.1.0"
}
},
"node_modules/base-64": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz",
"integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg=="
},
"node_modules/combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"dependencies": {
"delayed-stream": "~1.0.0"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/dotenv": {
"version": "16.4.7",
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz",
"integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://dotenvx.com"
}
},
"node_modules/follow-redirects": {
"version": "1.15.9",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
"integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
"funding": [
{
"type": "individual",
"url": "https://github.com/sponsors/RubenVerborgh"
}
],
"engines": {
"node": ">=4.0"
},
"peerDependenciesMeta": {
"debug": {
"optional": true
}
}
},
"node_modules/form-data": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz",
"integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==",
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
"mime-types": "^2.1.12"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/mailgun.js": {
"version": "10.4.0",
"resolved": "https://registry.npmjs.org/mailgun.js/-/mailgun.js-10.4.0.tgz",
"integrity": "sha512-YrdaZEAJwwjXGBTfZTNQ1LM7tmkdUaz2NpZEu7+zULcG4Wrlhd7cWSNZW0bxT3bP48k5N0mZWz8C2f9gc2+Geg==",
"dependencies": {
"axios": "^1.7.4",
"base-64": "^1.0.0",
"url-join": "^4.0.1"
},
"engines": {
"node": ">=18.0.0"
}
},
"node_modules/mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mime-types": {
"version": "2.1.35",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"dependencies": {
"mime-db": "1.52.0"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/proxy-from-env": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
},
"node_modules/url-join": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz",
"integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA=="
}
}
}

16
package.json Normal file
View File

@ -0,0 +1,16 @@
{
"name": "test",
"version": "1.0.0",
"description": "Mailer to send mail through mailgun",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"axios": "^1.7.9",
"dotenv": "^16.4.7",
"mailgun.js": "^10.4.0"
}
}