Мои шаблоны электронной почты всегда отправляются в виде обычного текста, а не HTML
Я новичок в 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);
Я ничего не вставляю для содержимого $, потому что содержимое определяется в шаблоне.
Если у кого-то есть идея, почему он отправляет только текстовую версию моего шаблонного письма при отправке из PHP, любой совет был бы очень признателен.
Спасибо
РЕДАКТИРОВАТЬ
Я подумал, что, возможно, придется установить тип содержимого в заголовке, поэтому я добавил:
$mail->addHeader("Content-Type", "text/html");
Но это просто дает мне ошибку. Я что-то упускаю?
2 ответа
Чтобы заставить письмо обрабатываться как HTML, просто добавьте к сообщению пустое тело HTML:
$mail->setHtml(" ");
$mail->setText(""); //Sendgrid requires a plain-text body too
Вы также можете использовать
$content = new \SendGrid\Content("text/html", "<html><body>some text here</body></html>");
$mail = new \SendGrid\Mail($from, $subject, $to, $content);
как показано в примере кода: https://github.com/sendgrid/sendgrid-php/blob/master/examples/helpers/mail/example.php