DocuSign技术问询:能否先创建created状态信封再转为sent并自行发签署链接?
解决方案:创建Created状态信封并自定义发送签署链接
1. 正确创建Created状态的信封
你遇到的报错大概率是因为没有显式设置信封状态为"created",DocuSign API的默认行为并非保持草稿状态,所以必须明确指定状态参数:
// 显式将信封设置为草稿(created)状态 envDef.Status = "created"; // 调用API创建信封(以C# SDK为例) EnvelopeSummary envelopeSummary = envelopesApi.CreateEnvelope(accountId, envDef); string envelopeId = envelopeSummary.EnvelopeId;
这样就能成功生成处于created状态的信封,既不会触发自动发送,也不会抛出异常。
2. 生成自定义签署链接并自行发送
要实现自己发送签署链接的需求,需要借助Recipient View API生成签署者专属访问URL。注意:处于created状态的信封是草稿状态,签署者无法直接访问,所以需要先将信封转为sent状态,同时禁用DocuSign的自动邮件通知,步骤如下:
第一步:更新信封状态为Sent并关闭自动邮件
先修改信封配置,关闭DocuSign的默认邮件发送,再将状态切换为sent:
// 构建信封更新请求 Envelope envelopeUpdate = new Envelope { Status = "sent", EmailNotifications = new EmailNotifications { // 全局禁用自动邮件发送 SendEmail = false, // 也可针对单个签署者单独设置(可选) RecipientEmailNotifications = new List<RecipientEmailNotification> { new RecipientEmailNotification { RecipientId = "1", // 对应你创建的签署者ID SendEmail = false } } } }; // 执行信封更新操作 envelopesApi.Update(accountId, envelopeId, envelopeUpdate);
第二步:调用Recipient View生成签署链接
此时信封处于sent状态但不会自动发邮件,你可以生成专属链接后用自有邮件服务发送:
// 构建Recipient View请求参数 RecipientViewRequest viewRequest = new RecipientViewRequest { ReturnUrl = "https://your-domain.com/sign-complete", // 签署完成后的跳转URL AuthenticationMethod = "email", Email = signerEmail, // 签署者邮箱 UserName = signerName, // 签署者姓名 RecipientId = "1", // 与创建信封时的签署者ID一致 ClientUserId = signerClientId // 嵌入式签署需填写,非嵌入式可留空 }; // 获取签署链接 ViewUrl viewUrl = envelopesApi.CreateRecipientView(accountId, envelopeId, viewRequest); string signingUrl = viewUrl.Url;
现在你就可以用自己的邮件中继代码把signingUrl发送给签署者了。
3. 补充:延迟转为Sent状态的场景
如果只是想先保存信封草稿,后续再决定是否发送,也可以在需要的时候再执行上述信封更新操作,将created状态转为sent(同时控制是否开启自动邮件)。
常见问题排查
- 未设置Status时报错:DocuSign API默认会尝试将信封设为
sent状态,若此时缺少邮件相关配置(比如你想自行发送),就会触发异常,因此必须显式设置Status = "created"。 - 签署链接无法访问:确保信封已转为
sent状态,且签署者的邮箱、姓名、RecipientId与创建信封时的配置完全匹配。
内容的提问来源于stack exchange,提问作者Awerber
相关产品推荐
相关产品推荐

