title: SendGrid email substitutions does not work for Gmail emails
body: <p>I am sending emails using SendGrid API and I am using Dynamic Email templates.</p>
  <p>My email template looks like this.</p>
  <p><a href="https://i.stack.imgur.com/ztw1V.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/ztw1V.png" alt="enter image description here" /></a></p>
  <p>Emails are sent to both Gmail and to emails created using my domain such as admin@mydomain.com.</p>
  <p>And I am using email substitutions to replace the <code>{{substitutables}}</code> in the template. The substitutions seem to work for emails from my domain but not for Gmail emails.</p>
  <p>Here is what Gmail email looks like. I am using web browser for my Gmail emails.
  <a href="https://i.stack.imgur.com/vQKBM.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/vQKBM.png" alt="enter image description here" /></a></p>
  <p>And here is what my domain emails look like. I am using MS Outlook as my mail client for domain emails.
  <a href="https://i.stack.imgur.com/QsIkh.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/QsIkh.png" alt="enter image description here" /></a></p>
  <p>Following is the code that I am using to send emails.</p>
  <pre><code>public function sendEmail(
      string $templateId,
      array $recipiants,
      array $substitutions = [],
      array $ccs = [],
      array $bccs = [],
      array $replyTo = [],
      array $attachments = []
  ){
  
      $emailParams = $this-&gt;params-&gt;get('email');
  
      $apiKey = $emailParams['sendgrid']['api_key'];
  
      $sendgrid = new \SendGrid($apiKey);
  
      $email = new Mail();
  
      if (!$recipiants || !is_array($recipiants) || count($recipiants) == 0){
          throw new NotFoundHttpException(&quot;Email Recipients Not Found!&quot;);
      }
  
      $email-&gt;setTemplateId($templateId);
      $email-&gt;setFrom(new From($emailParams['from']['email'], $emailParams['from']['name']));
  
      // adding recients to the emial
      foreach ($recipiants as $recipiant){
          $personalization = new Personalization();
          $toEmail = new To($recipiant['email'], $recipiant['name']);
          $personalization-&gt;addTo($toEmail);
          $email-&gt;addPersonalization($personalization);
      }
  
      // adding CCs to email
      if (count($ccs) &gt; 0) {
          foreach ($ccs as $cc) {
              $ccEmail = new Cc($cc['email'], $cc['name']);
              $email-&gt;addCc($ccEmail);
          }
      }
  
      // adding BCCs to email
      if (count($ccs) &gt; 0) {
          foreach ($bccs as $bcc) {
              $bccEmail = new Bcc($bcc['email'], $bcc['name']);
              $email-&gt;addBcc($bccEmail);
          }
      }
  
      // adding template substitutions
      if (count($substitutions) &gt; 0) {
          $email-&gt;addDynamicTemplateDatas($substitutions);
      }
  
      // sending email
      /** @var Response $response */
      $response = $sendgrid-&gt;send($email);
  
      if ($response-&gt;statusCode() != 202){
          throw new AccessDeniedHttpException(&quot;Failed to Send Email!&quot;);
      }
  }
  </code></pre>
  <p>Can someone point me what I am doing wrong and why it is behaving this way? Thank you for your time.</p>