我已经在Laravel中集成了sendgrid,我设法在电子邮件中发送sendgrid的电子邮件模板,但我无法替换电子邮件模板中的内容。我正在使用Sendgrid Web API V3。
我按照以下链接中给出的步骤操作,但它没有用动态数据替换模板中的变量。
链接:How to pass dynamic data to email template desgined on sendgrid webapp ? :-| Sendgrid
这是代码
$sg = new \SendGrid('API_KEY');
$request_body = json_decode('{
"personalizations":[
{
"to":[
{
"email":"example@example.com"
}
],
"subject":"Hello World from the SendGrid PHP Library!"
}
],
"from":{
"email":"from@example.com"
},
"content":[
{
"type":"text/html",
"value":"<html><body> -name- </body></html>"
}
],
"sub": {
"-name-": ["Alice"]
},
"template_id":"xxxxxx-xxx-xxxxxxxx"
}');
$mailresponse = $sg->client->mail()->send()->post($request_body);
echo $mailresponse->statusCode();
echo $mailresponse->body();
echo $mailresponse->headers();
请帮忙。
答案 0 :(得分:0)
我通过另一种方式克服了这个问题。下面是运行正常的代码。可能会帮助一些..
shared_ptr
答案 1 :(得分:0)
这有点晚了但也许这可以帮助一些人。我遇到了同样的问题,@bwest answer帮我解决了问题:
替换值不能是数组,应该看起来like:
`"personalizations":[{
"to":[{
"email":"example@example.com"
}],
"subject":"Hello World from the SendGrid PHP Library!",
"substitutions": {
"-name-": "Alice"
}
}
],
...
答案 2 :(得分:0)
这非常有效,并且比已经发布的解决方案简单得多:
$email = new \SendGrid\Mail\Mail();
$email->setFrom( "from@example.com", "Some guy" );
$email->addTo( "to@example.com", "Another guy" );
$email->setTemplateId(
new \SendGrid\Mail\TemplateId( TEMPLATE_ID )
);
// === Here comes the dynamic template data! ===
$email->addDynamicTemplateDatas( [
'variable1' => 'Some stuff',
'templatesRock' => 'They sure do!'
] );
$sendgrid = new \SendGrid( API_KEY );
$response = $sendgrid->send( $email );
答案 3 :(得分:0)
在JAVA中使用:
Personalization personalization = new Personalization();
及其用于将动态数据发送到sendgrid模板并使用{{}}的方法 用于在sendgrid上接收数据。