mailersend / mailersend-nodejs

The official MailerSend Node.js SDK
https://developers.mailersend.com
MIT License
125 stars 17 forks source link

TypeError: MailerSend is not a constructor #85

Closed itzdrli closed 1 year ago

itzdrli commented 1 year ago

I'm new to MailerSend, and after registering and I wanna try MailerSend's API via Node.JS, then I used the example code from the official site and edited something, then I did node ./index.js, and it reports back this error:

TypeError: MailerSend is not a constructor
    at Object.<anonymous> (D:\xxxxxxxr\index.js:5:20)
    at Module._compile (node:internal/modules/cjs/loader:1254:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
    at node:internal/main/run_main_module:23:47

My node version is 18.16.0 on Windows 11 amd64, Mailersend version 2.2.0

and my code:

const Recipient = require("mailersend").Recipient;
const EmailParams = require("mailersend").EmailParams;
const MailerSend = require("mailersend");

const mailersend = new MailerSend({
    api_key: "my key",
});

const recipients = [new Recipient("reciver@xxx.com", "xxxxxx")];

const emailParams = new EmailParams()
    .setFrom("hi@itzdrli.com")
    .setFromName("Itz_Dr_Li")
    .setRecipients(recipients)
    .setSubject("Hello, World!")
    .setHtml(`
      <!DOCTYPE html>
      <html lang="en">

      <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <script src="https://cdn.tailwindcss.com"></script>
      </head>

      <body class="bg-gray-900 text-white" style="width: 650px">
          <div class="container mx-auto px-4 max-w-650 w-auto">
              <div class="bg-gray-800 rounded-lg shadow-lg p-8">
                  <div class="text-center">
                      Hello, World!
                  </div>
                  <div class="text-center mt-4">
                      <div class="text-lg font-bold text-white">This is a message</div>
                  </div>
              </div>
          </div>
      </body>
      </html>`)
    .setText("Just a text");

mailersend.send(emailParams);
LuisAPPDev commented 3 months ago

ey! @itzdrli how did you solve it?

itzdrli commented 3 months ago

ey! @itzdrli how did you solve it?

Oh, I didn't solve it, just quit using the platform. No other meaning, just don't need mail API anymore.

LuisAPPDev commented 3 months ago

Oh ok!

Btw i just solve it:

The main changes are:

require('mailersend').MailerSend

const recipients = [new Recipient('mailto@example.es', 'Example Name')]

If helps to anyone fullcode:

 const Recipient = require('mailersend').Recipient
   const EmailParams = require('mailersend').EmailParams
   const MailerSend = require('mailersend').MailerSend
   const Sender = require('mailersend').Sender

   const mailerSendConfig = {apiKey: 'YOUR API KEY'}

   const mailerSend = new MailerSend(mailerSendConfig)

   const recipients = [new Recipient('mailto@example.es', 'Example Name')]

   const sentFrom = new Sender('sender@email.com', 'Name of Sender')

   const emailParams = new EmailParams()
          .setFrom(sentFrom)
          .setTo(recipients)
          .setSubject('Subject TEST')
          .setTemplateId('XXXXXX') //if needed
        try {
          await mailerSend.email.send(emailParams)
        } catch (error) {
          console.log(error)
        }

Hope it helps!