简体   繁体   中英

SendGrid API - Cannot use dynamic template data with a legacy template

Trying to follow the sample here https://docs.sendgrid.com/ui/sending-email/how-to-send-an-email-with-dynamic-templates , I'm sending the following JSON to this url: "https://api.sendgrid.com/v3/mail/send" (and I have sent a simple email before using the same code, now I want to try a template with substitution):

{
    "personalizations":  [
                             {
                                 "subject":  "Test template email from SendGrid",
                                 "to":  [
                                            {
                                                "name":  "Neal Walters",
                                                "email":  "myRecipient@example.com"
                                            }
                                        ],
                                 "dynamic_template_data":  {
                                                               "Applicant_Name":  "John Doe",
                                                               "Send_Date":  "December 30, 2022"
                                                           }
                             }
                         ],
    "from":  {
                 "name":  "NealWalters(SendGrid)",
                 "email":  "mySender@example.com"
             },
    "template_id":  "bcab1b12-d922-4cdd-b6f5-9f39b16d9823"
}

and getting this cryptic error:

{"errors":[{"message":"Cannot use dynamic template data with a legacy template 
ID","field":"personalizations.0.dynamic_template_data","help":null}]}

I have no idea what is a dynamic nor a legacy template. I copied one of Send Grid's demo templates (Nonprofit Newsletter Email Template) and added some of my own tags.

When I used the template name ("NealDemo Duplicate Nonprofit Newsletter Email Template") instead of the GUID (which I got from the URL when I was editing the template), the message was similar but added this to the above error - which leaves me with the question of can I use the template name or not? It's unclear what a "template_id" is on how to find it, if it is not the name of the template as I saved it.

{"message":"The template_id must be a valid GUID, 
you provided 'NealDemo Duplicate Nonprofit Newsletter Email Template'.","field":"template_id","help":"http://sendgrid.
com/docs/API_Reference/Web_API_v3/Mail/errors.html#message.template_id"},{"message":"Unless a valid template_id is 
provided, the content parameter is required. There must be at least one defined content block. We typically suggest 
both text/plain and text/html blocks are included, but only one block is required.","field":"content","help":"http://s
endgrid.com/docs/API_Reference/Web_API_v3/Mail/errors.html#message.content"}]}

Disappointed these are not listed on this errors page: https://docs.sendgrid.com/api-reference/mail-send/errors

Are there two template editors?

I used this one: https://mc.sendgrid.com/design-library/your-designs/bcab1b12-d922-4cdd-b6f5-9f39b16d9823/editor

I didn't see any other guid/id for the template, so I tried "bcab1b12-d922-4cdd-b6f5-9f39b16d9823" from the URL.

But now I see there is also a dynamic template editor??? https://mc.sendgrid.com/dynamic-templates As mentioned below, I copied one of your demo templates, which already had some substitution variables in at the bottom ({{Sender_Name}} {{Sender_Address}}, {{Sender_City}}, {{Sender_State}} {{Sender_Zip}}). I just added two of my own at the top.

I have referenced this: Getting "Cannot use dynamic template data with a legacy template" with non-legacy template

The saga continues. I went to this page: https://mc.sendgrid.com/dynamic-templates and was able to copy over my previous template, so perhaps it was a legacy template. It now gave it a clearly labeled template-id of: d-a35d9d48ce304588bbebf7828811b473 (which looks like a "d-" followed by a guid).

在此处输入图像描述

I ran that through the API call, which resulted in no immediate errors, but then I got this email:

在此处输入图像描述

Usually when I can't figure things out, it is either the documentation is lacking, or I was speed-reading it.

When I first setup my account, I apparently clicked a link that took me to SendGrid's main site, and I signed up for an account there. Apparently this step was totally unnecessary (also their site requires a 2FA, separate from Azure). So I built my templates on their site, which was under a different account then the one I created in Azure. Thus I was able to send emails with the token from Azure, but any time I tried to send a template from my second account, of course, it was not recognized with my Azure account.

You can create templates inside of Azure, from the links shown below:

在此处输入图像描述 Then this: 在此处输入图像描述

NOTE 1 - their "pretty" designs are still under the Legacy Templates, and "Dynamic Templates" seem to be the newer preferred way to go. You can build a "legacy template", then apparently copy it's HTML over to a "dynamic template".

NOTE 2 - I only solved this by opening a support ticket with SendGrid.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM