基于nodemailer实现邮件发送、附件发送、多人发送

1、QQ邮箱如何设置授权码

QQ邮箱SMTP/IMAP服务

1、点击账号与安全

在这里插入图片描述
2、安全设置
在这里插入图片描述
3、设备管理,可以查看有多少个授权码
在这里插入图片描述

2、具体代码

from 这个参数,有两种写法

  1. qq号@qq.com
  2. "姓名"<qq号@qq.com>
  • from :发件人的电子邮件地址
  • to :以逗号分隔的收件人电子邮件地址列表或数组,将显示在“收件人”字段中
  • cc :以逗号分隔的抄送人电子邮件地址列表或数组,将显示在“抄送”字段中。
  • bcc:以逗号分隔的密送人电子邮件地址列表或数组,将显示在“密送”字段中
  • subject :邮件的主题
  • text :纯文本内容
  • html :HTML类型的消息,但是和 text 冲突,后者会覆盖掉前者,
  • attachments:附件的数组,每个附件包含以下属性:
    • filename:附件的文件名。
    • content:附件的内容,可以是 Buffer、流或文件路径。
    • contentType:附件的 MIME 类型。
import nodemailder from "nodemailer";
import Koa from "koa";
import Router from "koa-router";

const transPort = nodemailder.createTransport({
  service: "qq", // 服务商
  host: "smtp.qq.com", // 服务器地址
  auth: {
    pass: "xxxxxxxx", // 密码 或者 授权码
    user: "xxxxx@qq.com", // 邮箱账号
  },
  secure: true, // 加密发送
});

const app = new Koa();
const router = new Router();

// 处理 GET 请求
router.get("/sendMail", async (ctx) => {
  try {
    let { mailText, mailSubject, mainTo } = ctx.request.query;
    console.log(mailText, mailSubject, mainTo);
    let res = await transPort.sendMail({
      to: mainTo, // 发送给谁
      // from: "xxxx@qq.com", // 发送人;这种写法也可以
      from: `"傻瓜"<xxxxx@qq.com>`, // 发送人
      subject: mailSubject, // 主题
      text: mailText, // 内容
      html: `
        <h1>你好,您的邮件已收到!</h1>
        <hr/>
        <p>
            <b>祝:</b><br/>
            &nbsp;&nbsp;&nbsp;&nbsp;身体健康,工作顺利!
        </p>
      `,
      attachments: [
        // 附件
        {
          filename: "image-20231128063900411.png", // 名称
          // content: "hello world", // 文本/ buffer/相对路径/等等
          path: "http:xxxxx/image-20231128063900411.png",
        },
        {
          filename: "测试记事本格式.txt",
          content: "测试文本",
        },
        {
          filename: "测试Buffer.docx",
          content: Buffer.from("word文档,晚上好"),
        },
      ],
    });
    transPort.close();
    console.log("发送成功:");
    ctx.set("Content-Type", "application/json");
    ctx.body = {
      state: "1",
      meg: "发送成功~",
      data: {
        sendMail: res,
      },
    };
    ctx.status = 200;
  } catch (error) {
    console.log(error, "错误信息");
  }
});

app.use(router.routes());

// 启动服务器
app.listen(3000, () => {
  console.log("Server is running on http://localhost:3000");
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值