我是SendGrid的新手,我试图弄清楚为什么电子邮件总是以纯文本形式发送,而不是我已经设计的HTML交易模板。如果我使用sendgrid"预览/测试"我自己发送电子邮件的功能,它通过查看它应该如何,图像,HTML等来实现。
但是,当我使用PHP API发送电子邮件时,电子邮件将以纯文本形式发送。我用这一行告诉SendGrid使用哪个模板:
$mail->setTemplateId([my template ID]);
在我最终调用以下内容之前,是否还应该通过PHP API设置其他一些内容?
$sg->client->mail()->send()->post($mail);
以下是我的所有SendGrid代码:
$from = new SendGrid\Email([website name], [website email address]);
$subject = "test subject";
$to = new SendGrid\Email(null, $email);
$content = "";
$mail = new SendGrid\Mail($from, $subject, $to, $content);
$mail->setTemplateId([my template ID]);
//$mail->setASMGroupId(3057);
$mail->personalization[0]->addSubstitution("%email%", $email);
$mail->personalization[0]->addSubstitution("%hash%", $hash);
$apiKey = [my api key];
$sg = new \SendGrid($apiKey);
$response = $sg->client->mail()->send()->post($mail);
我没有为$ content添加任何内容,因为内容是在模板中指定的。
如果有人知道为什么它只是从PHP发送我的模板化电子邮件的纯文本版本,那么任何建议都会非常感激。
谢谢
修改
我想我可能要在标题中设置内容类型,所以我添加了:
$mail->addHeader("Content-Type", "text/html");
但这只是给了我一个错误。我有什么遗失的吗?
答案 0 :(得分:0)
要强制将电子邮件视为HTML,只需在邮件中添加一个空的HTML正文:
// runs when the app viewport/window gets focus, such as when switching tabs and back
$window.onfocus = function() {
redirectIfUserChange(); // or any other arbitrary logic
};
答案 1 :(得分:-1)