Deno SMTP mail client

This is a WIP fork of the (dead?) https://github.com/manyuanrong/deno-smtp to enable better mail sending!

The following additional API are added / planed:

  • to multiple mails
  • cc and bcc
  • STARTTLS (Thanks to @dbellingroth)
  • Attachments
  • replyTo
  • rewrite content with more options
  • priority
  • encoding tests (äöß,...) pending attachments

Allowed SingleMailFormat:

name@example.de
<name@example.de>
NAME <name@example.de>
{mail: "name@example.de"}
{mail: "name@example.de", name: "NAME"}

For to, cc, bcc you can provide one of the above OR a array of the above OR a object: {"NAME": "name@example.de"} where the name maps to the mail.

Example

import { SmtpClient } from "https://deno.land/x/smtp/mod.ts";

const client = new SmtpClient();

await client.connect({
  hostname: "smtp.163.com",
  port: 25,
  username: "username",
  password: "password",
});

await client.send({
  from: "mailaddress@163.com",
  to: "to-address@xx.com",
  subject: "Mail Title",
  content: "Mail Content",
  html: "<a href='https://github.com'>Github</a>",
});

await client.close();

TLS connection

await client.connectTLS({
  hostname: "smtp.163.com",
  port: 465,
  username: "username",
  password: "password",
});

Use in Gmail

await client.connectTLS({
  hostname: "smtp.gmail.com",
  port: 465,
  username: "your username",
  password: "your password",
});

await client.send({
  from: "someone@163.com", // Your Email address
  to: "someone@xx.com", // Email address of the destination
  subject: "Mail Title",
  content: "Mail Content,maybe HTML",
});

await client.close();

Configuring your client

You can pass options to your client through the SmtpClient constructor.

import { SmtpClient } from "https://deno.land/x/smtp/mod.ts";

//Defaults
const client = new SmtpClient({
  content_encoding: "quoted-printable", // 7bit, 8bit, base64, binary, quoted-printable
});