Skip to content

Setting Personalization Removes Existing template_data #1037

Description

@jr-bespoke

Issue Summary

I am trying to determine why using add_personalization removes the existing dynamic_template_data I already set on my mail object. If this is desired behavior, I would have expected some kind of note about it in the docs, or preferably a warning in the code.

I tried looking in the knowledge base, on github issues, and on stack overflow. I could not find anything to suggest why this might be happening. I found the workaround by simply resetting dynamic_template_data. I could, of course, simply add the personalization first and then add the dynamic_template_data, but this seemed like a silent gotcha that should be brought to the sendgrid team's awareness.

Steps to Reproduce

  1. Attach dynamic template data to mail object
  2. Have cc recipients, so add personalization to mail object
  3. Dynamic template data is now empty

Code Snippet

def our_simplified_send_func(to_, template_id, template_data, cc_recipients = []):
    mail = Mail(from_email=self._from, to_emails=_to) # self._from is a class var
    mail.dynamic_template_data = template_data
    mail.template_id = template_id

    if len(cc_recipients) > 0:
        sendgrid_personalization = Personalization()

        for cc in cc_recipients:
            sendgrid_personalization.add_cc( To(cc, cc) )

        for to_recipient in to_:
            sendgrid_personalization.add_to( To(to_recipient, to_recipient) )
            mail.add_personalization(sendgrid_personalization)

        # Why do I need to re-add dynamic_template_data after adding a personalization?
        mail.dynamic_template_data = template_data

Exception/Log

It's not an explicit exception or error log so much as running `add_personalization` removes the existing dynamic_template_data.

Technical details:

  • sendgrid-python version: 6.4.8
  • python version: 3.8.12

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions