【问题标题】:How do I send dynamic data to template file using sendgrid?如何使用 sendgrid 将动态数据发送到模板文件?
【发布时间】:2022-01-09 22:49:43
【问题描述】:

您好,我正在尝试使用 sendgrid 将动态数据发送到外部模板文件,如下所示:

$sendgrid = new SendGrid(getenv('SENDGRID_KEY'));
$email = new SendGrid\Email();
$message_body = file_get_contents('../templates/emails/third-party-booking.php');

$email->addTo(getenv('SENDGRID_EMAIL'))
      ->setFrom("from@email.com")
      ->setSubject("Just a subject here")
      ->setHtml($message_body);

$sendgrid->send($email);

如何将$details 发送到模板,谢谢!

【问题讨论】:

    标签: php sendgrid


    【解决方案1】:

    如果 $detail 包含一些应该在模板中使用的参数,您可以在 $message_body 步骤中进行。

    $sendgrid = new SendGrid(getenv('SENDGRID_KEY'));
    $email = new SendGrid\Email();
    $message_body = file_get_contents('../templates/emails/third-party-booking.php');
    // $details = ['name'=>'Jean', 'email'=>'jean@gmail.com'];
    // third-party-booking.php content be like 
    // <html>...%name%.....%email%...</html>
    
    foreach ($details as $parameter => $value) {
        $message_body= str_replace('%' . $parameter . '%', $value, $message_body);
    }
    
    $email->addTo(getenv('SENDGRID_EMAIL'))
          ->setFrom("from@email.com")
          ->setSubject("Just a subject here")
          ->setHtml($message_body);
    
    $sendgrid->send($email);
    

    无法将数据发送到 php 文件,因为它会复制文件内容(请参阅PHP - include a php file and also send query parameters)

    【讨论】:

    • 所以我需要安装github.com/knpuniversity/twig
    • 如果你使用 symfony 框架,我建议你这样做。如果您只使用 php,请参阅文档链接
    • 我正在使用 Slim 框架。该文档仅显示有关使用 sendgrid 模板(使用 sendgrid 模板 id)而不使用外部 html 文件的示例。
    • 我已根据您的要求编辑了答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-11
    • 2020-05-02
    • 1970-01-01
    • 1970-01-01
    • 2020-06-05
    • 1970-01-01
    相关资源
    最近更新 更多