Escape-символы в шаблонах электронной почты - PullRequest
0 голосов
/ 09 мая 2018

У меня есть шаблон электронной почты, который содержит переменную - ${token} для временного пароля. В этом случае токен == @.iJ<ep2C]a-d$}4xK{. При отображении в Gmail токен усекается до символа <и отображается как <code>@.iJ. Как я могу избежать символов в токене, чтобы они правильно отображались в Gmail?

Template

From: info@mycompany.com
Subject: New User Activation
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="alternative_boundary"

This is a message with multiple parts in MIME format.

--alternative_boundary
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit

Dear ${firstName} ${lastName},

Please click on the below link and use Temporary password: ${token} to activate your new account.

${reset_url}


--alternative_boundary
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: 8bit


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>New account activation</title>

</head>
<body>
    <p>Dear ${firstName} ${lastName},</p>
    <p>Please click <a href="${reset_url}">here</a> to activate your new account and use verification code: ${token} in the page</p>

</body>
</html>

1 Ответ

0 голосов
/ 09 мая 2018

Вы хотите экранировать зарезервированные символы в документах MDN:

  • & &amp;
  • < &lt;
  • > &gt;
  • " &quot;

Gmail считает, что < является началом тега HTML.

Если вы используете JavaScript, замените их в токене, как Самый быстрый способ скрыть теги HTML как объекты HTML? :

function escapeHtmlEntities(str) {
  return str
    .replace(/&/g, '&amp;')
    .replace(/</g, '&lt;')
    .replace(/>/g, '&gt;')
    .replace(/"/g, '&quot;');
}

В вашем шаблоне:

...${escapeHtmlEntities(token)}...
...