You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Node.js中发送仅指定收件人但显示完整To/CC信息的邮件?

Node.js实现指定收件人可见完整To/CC的邮件发送方案

要实现这个需求,核心思路是分离SMTP信封的实际收件人和邮件头的显示收件人:通过SMTP的RCPT TO指令控制真正接收邮件的地址,同时在邮件的To/CC头中填写完整的成员列表,这样收件人打开邮件时能看到完整的地址,但只有指定的人会收到邮件。

下面用Node.js最常用的nodemailer库来实现:

1. 安装依赖

npm install nodemailer

2. 代码实现示例

const nodemailer = require('nodemailer');

// 配置SMTP传输(替换成你的SMTP服务信息)
const transporter = nodemailer.createTransport({
  host: 'smtp.example.com',
  port: 587,
  secure: false,
  auth: {
    user: 'your-email@example.com',
    pass: 'your-password'
  }
});

// 邮件配置
const mailOptions = {
  from: 'your-email@example.com',
  // 邮件头显示的完整To列表
  to: '1@example.com',
  // 邮件头显示的完整CC列表
  cc: '2@example.com',
  subject: '测试邮件',
  text: '这是一封测试邮件,你能看到CC里的2@example.com,但对方不会收到邮件',
  // 关键:控制SMTP信封的实际收件人
  envelope: {
    from: 'your-email@example.com',
    // 仅指定实际要发送的收件人
    rcptTo: '1@example.com'
  }
};

// 发送邮件
transporter.sendMail(mailOptions, (error, info) => {
  if (error) {
    return console.log(error);
  }
  console.log('邮件发送成功: %s', info.messageId);
});

关键原理说明

  • to和cc字段是邮件头的内容,仅用于收件人查看,不会决定谁实际收到邮件
  • envelope.rcptTo是SMTP协议层面的实际收件人指定,SMTP服务器只会把邮件发送给这个地址列表里的用户
  • 这种方式完全符合SMTP协议规范,只要你的SMTP服务商允许自定义信封(大部分主流服务商都支持),就能正常工作

注意事项

  • 部分邮件服务商可能会做反垃圾邮件检查,若信封收件人和邮件头差异过大,可能会被标记,建议先测试
  • 请勿用于垃圾邮件发送,遵守邮件发送的相关法规和服务商规则

内容的提问来源于stack exchange,提问作者Ravi Ranjan Ojha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 02:45:02