TypeScript SMTP Client
Author: Jonathan M. Wilbur <jonathan@wilbur.space>
Copyright Year: 2019
License: MIT License
Usage
import { Client } from "../source/Client";
import { Response } from "../source/Response";
const client : Client = new Client("email.wilbur.space", 26);
(async () => {
const connectResponse : Response = await client.connect();
console.log(`${connectResponse.code} ${connectResponse.lines.toString()}`);
const ehloResponse : Response = await client.ehlo("bigboiiii.com");
console.log(`${ehloResponse.code} ${ehloResponse.lines.map((line) => line.toString()).join("\r\n")}`);
console.log("MAIL");
const mailResponse : Response = await client.mail("bigboi@wuuut.com");
console.log(`${mailResponse.code} ${mailResponse.lines.toString()}`);
console.log("RCPT");
const rcptResponse : Response = await client.rcpt("jonathan@wilbur.space");
console.log(`${rcptResponse.code} ${rcptResponse.lines.toString()}`);
console.log("DATA");
const dataResponse : Response = await client.data();
console.log(`${dataResponse.code} ${dataResponse.lines.toString()}`);
console.log("writing data...");
const writeResponse : Response = await client.writeData("WHO WANTS A BODY MASSAGE?");
console.log(`${writeResponse.code} ${writeResponse.lines.toString()}`);
console.log("QUIT");
const quitResponse : Response = await client.quit();
console.log(`${quitResponse.code} ${quitResponse.lines.toString()}`);
})();
Notes
For testing, I had to change my test email server to listen on port 26, because
my ISP blocks outbound port 25 traffic.
In my testing, it appears that the RCPT
command hangs for tens of seconds.
This might only be specific to my testing environment, which was testing
against Postfix via plaintext SMTP on port 26 (not a typo).