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

如何在C#中通过Redemption设置SMTP的RCPT TO实现收件人显示与实际接收不一致

在C#中使用Redemption设置SMTP的RCPT TO值,实现显示收件人与实际接收地址不一致

我们正在使用Redemption向日志邮箱发送邮件,需要实现邮件中显示的收件人(To)地址与实际接收地址不一致的效果。比如:创建邮件时将To地址设为jbloggs@example.com,但实际发送至TomJones@test.com,使得邮件进入TomJones@test.com邮箱时,显示的收件人仍为jbloggs@example.com。我们清楚这看似地址伪造,但这是客户明确提出的需求,且已确认有其他公司实现了该功能。

更新:了解到SMTP协议中RCPT TO和邮件头里的TO字段无需强制匹配后,现咨询具体在C#中如何通过Redemption设置/修改SMTP的RCPT TO值?


实现步骤与代码示例

Redemption的RDOSession和RDOMessage对象支持独立配置邮件头显示收件人与SMTP实际接收地址,具体实现如下:

  1. 初始化Redemption会话并配置SMTP参数
  2. 设置邮件头显示的收件人(对应收件人看到的To字段)
  3. 通过SMTPRecipients集合添加实际接收地址(对应SMTP的RCPT TO)
  4. 发送邮件
using Redemption;

// 初始化Redemption会话
RDOSession session = new RDOSession();
// 配置SMTP服务器信息(根据实际情况修改)
session.SmtpServer = "your-smtp-server.com";
session.SmtpPort = 587;
session.SmtpUseSSL = true;
session.SmtpAuthenticate = rdoSmtpAuthentication.smtpAuthLogin;
session.SmtpUserName = "your-smtp-username";
session.SmtpPassword = "your-smtp-password";

// 创建新邮件
RDOMessage msg = session.CreateMessageFromMsgFile(null);

// 设置邮件头显示的收件人(用户邮箱中看到的To地址)
msg.To = "jbloggs@example.com";
// 设置邮件主题与正文
msg.Subject = "测试显示收件人与实际接收地址分离";
msg.Body = "此邮件显示收件人为jbloggs@example.com,实际接收地址为TomJones@test.com";

// 添加SMTP实际接收地址(对应RCPT TO指令)
RDORecipient actualRecipient = msg.SMTPRecipients.Add("TomJones@test.com");
actualRecipient.Type = (int)rdoRecipientType.olTo;

// 发送邮件
msg.Send();

关键说明

  • msg.To:控制邮件头中的TO字段,仅影响收件人看到的显示地址
  • msg.SMTPRecipients:直接对应SMTP协议中的RCPT TO指令,决定邮件实际投递的地址,与邮件头显示收件人完全独立
  • 需提前确认SMTP服务器允许此类发送方式(部分服务器有反伪造策略,可能需要配置白名单)

内容的提问来源于stack exchange,提问作者m_collard

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 17:13:20