来自自定义策略的 SendGrid API 发送没有主题的电子邮件

SendGrid API from Custom Policy sends email with no subject

我正在使用调用 SendGrid API 的自定义策略来发送 OTP 邮件。 API 发送成功,但主题部分未反映请求的值。

这是我生成 JSON 的自定义策略代码。

<ClaimsTransformation Id="GenerateEmailRequestBody-Local" TransformationMethod="GenerateJson">
    <InputClaims>
        <InputClaim ClaimTypeReferenceId="email" TransformationClaimType="personalizations.0.to.0.email" />
        <InputClaim ClaimTypeReferenceId="otp" TransformationClaimType="personalizations.0.dynamic_template_data.otp" />
        <InputClaim ClaimTypeReferenceId="email" TransformationClaimType="personalizations.0.dynamic_template_data.email" />
        <InputClaim ClaimTypeReferenceId="subject" TransformationClaimType="subject" />
    </InputClaims>
    <InputParameters>
        <!-- Update the template_id value with the ID of your SendGrid template. -->
        <InputParameter Id="template_id" DataType="string" Value="d-xxxxxxxxxxxxxxxxxxxxxxxxxx" />
        <!-- Todo: update the sender -->
        <InputParameter Id="from.email" DataType="string" Value="sender@gmail.com" />
        <InputParameter Id="from.name" DataType="string" Value="Administrator" />
    </InputParameters>
    <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="emailRequestBody" TransformationClaimType="outputClaim" />
    </OutputClaims>
</ClaimsTransformation>

下面是从自定义策略生成并发送到 SendGrid 的请求。

{
    "personalizations": [
        {
            "to": [
                {
                    "email": "someone@gmail.com"
                }
            ],
            "dynamic_template_data": {
                "email": "someone@gmail.com",
                "otp": "086924"
            }
        }
    ],
    "subject": "Verification code",
    "template_id": "d-xxxxxxxxxxxxxxxxxxxxxxxx",
    "from": {
        "email": "someone@gmail.com",
        "name": "Administrator"
    }
}

有没有我漏掉的部分?请帮忙。

很少有东西可以尝试

  1. 更新主题的 TransformationClaimType。
<InputClaim ClaimTypeReferenceId="subject" TransformationClaimType="personalizations.0.dynamic_template_data.subject" />
  1. 验证主题声明是否具有有效值。尝试将默认值设置为 inputclaim。

  2. 更新发送网格门户中的主题字段。