postal-node icon indicating copy to clipboard operation
postal-node copied to clipboard

Mail is not sending

Open zain-bryxo opened this issue 1 year ago • 1 comments

I tried this code in node js 20+ version but it is not working and showing error

export async function HttpApiPostalserver(plainBody, htmlBody) {
    try {
   
        var client = new postal.Client(
            "my host",
            "My api key",
        );
        let message = new postal.SendMessage(client);
   
            message.to(<my-mail>);
            message.from(<from-mail>);
            message.subject("test mail");
            message.plainBody(plainBody);
            message.htmlBody(htmlBody);

        const result = await message.send();
        if (result) {
            return { success: true, message: "Email sent successfully" }
        }
        var recipients = result.recipients();

        for (var email in recipients) {
            var messageSended = recipients[email];
            if (messageSended.id()) {
                console.log(messageSended.id()); // Logs the message ID
                console.log(messageSended.token()); // Logs the message's token
                return {
                    success: true,
                    id: message.id(),
                    message: "Email sent successfully"
                }
            } else {
                return { error: "Failed to send mail" }
            }
        }

with this error message


node:internal/process/promises:289
            triggerUncaughtException(err, true /* fromPromise */);
            ^

Error: write EPROTO 78260000:error:0A000438:SSL routines:ssl3_read_bytes:tlsv1 alert internal error:c:\ws\deps\openssl\openssl\ssl\record\rec_layer_s3.c:1590:SSL alert number 80

    at WriteWrap.onWriteComplete [as oncomplete] (node:internal/stream_base_commons:95:16) {
  errno: -4046,
  code: 'EPROTO',
  syscall: 'write'
}

Node.js v20.13.1
[nodemon] app crashed - waiting for file changes before starting...

Any solution for it please

zain-bryxo avatar Jul 19 '24 10:07 zain-bryxo

To me it seems like an OpenSSL issue. Try to debug the connection itself, maybe curl will give You more details on what is failing.

$ curl -vv -X POST https://your_postal_server/api/v1/send/message

Obviously this should "fail" since You are not sending API key in the headers, nor payload, but if You have issues with the certificates (are they self-signed?) it should show up.


As an alternative, try a no-dependency send inside nodejs to get maybe more info on what is failing.

const mail = {
    to: "<my-mail>",
    from: "<from-mail>",
    subject: "test mail",
    plain_body: plainBody,
    html_body: htmlBody
}

try {
    await fetch(
        new Request(`${my host}/api/v1/send/message`, {
            method: 'POST',
            body: JSON.stringify(mail),
            headers: {
                'Content-Type': 'application/json',
                'X-Server-API-Key': "My api key"
            }
        })
    )
} catch (error) {
    console.log(error)
}

bitbay avatar Sep 24 '24 04:09 bitbay