如何通过Salesforce Apex Toolkit根据收件人语言设置DocuSign邮件语言
问题解决:Salesforce Apex Toolkit设置DocuSign收件人邮件语言不生效
核心问题原因
你的代码最后调用了myEnvelope.withEmail()设置信封级的邮件主题和正文,这会直接覆盖收件人级别的EmailSettings配置,导致你为收件人单独设置的德语语言不生效。信封级的邮件设置优先级高于单个收件人的设置,因此需要移除这一步。
具体修复步骤
- 移除信封级的邮件设置:删除
myEnvelope = myEnvelope.withEmail('Email Subject', 'Email Text');这一行代码,让收件人自己的EmailSettings生效。 - 确认语言代码正确性:确保使用DocuSign支持的ISO 639-1两位小写语言代码(例如
'de'对应德语,'fr'对应法语等),语言名称仅作为辅助标识,核心生效的是两位代码。 - 验证收件人关联:确认
myContact是目标收件人,且你期望的语言设置已正确映射到EmailSettings中。
修正后的Apex代码示例
dfsle.Envelope myEnvelope = dfsle.EnvelopeService.getEmptyEnvelope( new dfsle.Entity(opportunityId)); Contact myContact = opportunityIdToContactIdMap.get(opportunityId); // 创建收件人 dfsle.Recipient myRecipient = dfsle.Recipient.fromSource( myContact.Name, myContact.Email, null, 'Signer', new dfsle.Entity(myContact.Id)); // 设置收件人专属邮件语言和内容 dfsle.Recipient.EmailSettings emailSettings = new dfsle.Recipient.EmailSettings( 'de', // 德语ISO标准语言代码 'German', '德语邮件主题', // 替换为实际德语主题 '德语邮件正文内容' // 替换为实际德语正文 ); myRecipient = myRecipient.withEmailSettings(emailSettings); myEnvelope = myEnvelope.withRecipients(new List<dfsle.Recipient> { myRecipient }); // 加载模板和文档 String templateId = 'template ID'; dfsle.UUID myTemplateId = dfsle.UUID.parse(templateId); dfsle.Document myDocument = dfsle.Document.fromTemplate( myTemplateId, 'Opportunity Document'); Id myFileId = contentVersionId; dfsle.Document myPdfDocument = dfsle.DocumentService.getDocuments(ContentVersion.getSObjectType(), new Set<Id> { myFileId }).get(0); myDocument = myDocument.withReplacement(myPdfDocument); // 修正原代码中缺失的赋值操作 myEnvelope = myEnvelope.withDocuments(new List<dfsle.Document> { myDocument }); // 移除信封级邮件设置,避免覆盖收件人配置 // myEnvelope = myEnvelope.withEmail('Email Subject', 'Email Text'); // 发送信封 myEnvelope = dfsle.EnvelopeService.sendEnvelope( myEnvelope, true);
额外检查点
- 确认DocuSign与Salesforce的集成配置中,未开启全局强制覆盖邮件语言的设置。
- 如果使用DocuSign模板,检查模板是否设置了固定邮件语言,若有则需调整模板配置(收件人级设置通常优先级高于模板默认设置)。
内容的提问来源于stack exchange,提问作者user2018
相关产品推荐
相关产品推荐

