Skip to content

kenote/mailer-helper

Repository files navigation

mailer-helper

Mailer's Helper.

NPM Version NPM Downloads Build Status Gratipay

Installation

$ npm install kenote-mailer-helper
#
$ yarn add kenote-mailer-helper

Usages

mailer.ts

import { Mailer, Setting } from 'kenote-mailer-helper'
import * as Mail from 'nodemailer/lib/mailer'

@Setting({
  smtpOptions: {
    host: 'smtp.ethereal.email',
    port: 587,
    auth: {
      user: 'penelope.leuschke41@ethereal.email',
      pass: 'aPxRSFBXbM7dseEwKK'
    }
  },
  asyncRetryOptions: {
    times: 3,
    interval: 200
  },
  mailDir: 'mails',
  renderString: nunjucks.renderString
})
class NodeMailer extends Mailer {}

/** 
 * 发送邮件选项
 * @ from -- 发件人
 *   格式 -- 发件人名称 <发件人邮箱地址>
 * @ to -- 收件人
 *   格式 -- 收件人 <收件人邮箱地址>
 *   多个收件人用逗号分割
 * @ cc -- 抄送,可选项
 *   格式 -- 与收件人相同
 * @ bcc -- 密送,可选项
 *   格式 -- 与收件人相同
 * @ subject -- 标题
 *   格式 -- 字符串
 * @ text -- 正文,文本形式
 *   格式 -- 字符串
 * @ html -- 正文,HTML形式
 *   格式 -- HTML格式
 * @ attachments -- 附件,可选项
 *   格式 -- 数组
 *   [
 *     {
 *       filename: 'README.md',
 *       path: path.resolve(process.cwd(), 'README.md'),
 *       cid: '00000001'
 *     },
 *     {
 *       filename: 'README.md',
 *       content: '发送内容',
 *       cid: '00000002'
 *     }
 *   ]
 **/
const mail: Mail = {
  from: 'penelope.leuschke41@ethereal.email',
  to: 'penelope.leuschke41@ethereal.email',
  subject: 'Ethereal Email',
  text: 'Ethereal Email.'
}

const nodeMailer: NodeMailer = new NodeMailer()

// asyncSend
nodeMailer.asyncSend(mail)

// renderMail
nodeMailer.renderMail('email_verify.mjml', {})

// sendMail
nodeMailer.sendMail('email_verify.mjml', mail, {})

email_verify.mjml

<mjml>
  <mj-head>
    <mj-title>{{ site_name }}邮箱验证</mj-title>
    <mj-attributes>
      <mj-all font-size="15px" color="#646464" line-height="1.4" />
      <mj-class name="title" font-size="20px" color="#4e9c74" font-weight="bold" />
    <mj-attributes>
  </mj-head>
  <mj-body background-color="#ffffff" width="100%">
    <mj-section>
      <mj-column>
        <mj-text>亲爱的 {{ username }}:</mj-text>
        <mj-text>欢迎申请{{ site_name }}服务!</mj-text>
        <mj-text>你的{{ site_name }}帐号是: {{ username }}<br/>请点击下面的链接完成邮箱验证:</mj-text>
        <mj-text font-size="14px"><a href="{{ email_verify_url }}" target="_blank">{{ email_verify_url }}</a></mj-text>
        <mj-text>如果以上链接无法点击,请将该链接复制到浏览器(如 Chrome )的地址栏中访问,也可以成功完成邮箱验证!</mj-text>
        <mj-spacer height="30px" />
        <mj-text>1. 为了保障您账号的安全性, 请在{{ timeout }}小时内完成验证, 此链接将在您激活过一次后失效!</mj-text>
        <mj-text>2. 如您没有注册过{{ site_name }}账号, 请您忽略此邮件, 由此给您带来的不便敬请谅解。</mj-text>
        <mj-spacer height="30px" />
        <mj-text>- {{ site_name }}<br/>(这是一封自动产生的Email,请勿回复)</mj-text>
      </mj-column>
    </mj-section>
  </mj-body>
</mjml>

License

this repo is released under the MIT License.