2020-05-01 16:25:32 +00:00
|
|
|
/**
|
|
|
|
* @readonly
|
|
|
|
* @enum
|
|
|
|
*/
|
|
|
|
export const SMTPErrorStates = {
|
|
|
|
COULDNOTCONNECT: 1,
|
|
|
|
BADRESPONSE: 2,
|
|
|
|
AUTHFAILED: 3,
|
|
|
|
TIMEDOUT: 4,
|
|
|
|
ERROR: 5,
|
|
|
|
NOCONNECTION: 6,
|
|
|
|
AUTHNOTSUPPORTED: 7,
|
|
|
|
CONNECTIONCLOSED: 8,
|
|
|
|
CONNECTIONENDED: 9,
|
|
|
|
CONNECTIONAUTH: 10,
|
|
|
|
} as const;
|
2020-04-23 04:26:49 +00:00
|
|
|
|
2020-05-27 12:31:36 +00:00
|
|
|
export class SMTPError extends Error {
|
2019-09-18 23:24:09 +00:00
|
|
|
public code: number | null = null;
|
2020-05-24 14:47:49 +00:00
|
|
|
public smtp: unknown = null;
|
2019-09-18 23:24:09 +00:00
|
|
|
public previous: Error | null = null;
|
2020-04-26 16:20:56 +00:00
|
|
|
|
2020-05-27 12:31:36 +00:00
|
|
|
/**
|
|
|
|
* @protected
|
|
|
|
* @param {string} message error message
|
|
|
|
*/
|
|
|
|
protected constructor(message: string) {
|
2020-04-26 16:20:56 +00:00
|
|
|
super(message);
|
|
|
|
}
|
2019-09-18 23:24:09 +00:00
|
|
|
|
2020-05-27 12:31:36 +00:00
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @param {string} message error message
|
|
|
|
* @param {number} code smtp error state
|
|
|
|
* @param {Error | null} error previous error
|
|
|
|
* @param {unknown} smtp arbitrary data
|
|
|
|
* @returns {SMTPError} error
|
|
|
|
*/
|
|
|
|
public static create(
|
|
|
|
message: string,
|
|
|
|
code: number,
|
|
|
|
error?: Error | null,
|
|
|
|
smtp?: unknown
|
|
|
|
) {
|
|
|
|
const msg = error?.message ? `${message} (${error.message})` : message;
|
|
|
|
const err = new SMTPError(msg);
|
2019-09-18 23:24:09 +00:00
|
|
|
|
2020-05-27 12:31:36 +00:00
|
|
|
err.code = code;
|
|
|
|
err.smtp = smtp;
|
2019-09-18 23:24:09 +00:00
|
|
|
|
2020-05-27 12:31:36 +00:00
|
|
|
if (error) {
|
|
|
|
err.previous = error;
|
|
|
|
}
|
2019-09-18 23:24:09 +00:00
|
|
|
|
2020-05-27 12:31:36 +00:00
|
|
|
return err;
|
|
|
|
}
|
2019-09-18 23:24:09 +00:00
|
|
|
}
|