将 HTML 标记存储在 PHP 字符串中

Fra*_*sca 2 html php

我正在尝试使用 PHP 创建电子邮件自动化。最初我有这个:

function send_email($email) {
    $message = "Hello! Here is an email message";
    mail($email, "Subject Line", $message, "from: email@ouremail.co.uk");
}
Run Code Online (Sandbox Code Playgroud)

不过,我想让通过电子邮件发送的消息更长一些,并包含一些 HTML 标记(简单的 h1 和 p 标记)。

我是 PHP 新手,但可以找到有关如何在 HTML 中输出 PHP 的信息,但无法找到如何在 PHP 变量中包含 HTML 的信息。我需要能够将标记存储在里面$message

还有一件事我无法理解。如果我想像 HTML 中那样编写单词don't,那么我不能使用“ '”来打开和关闭。我必须用它"来代替。它是否正确?

ETA:有没有办法通过此函数发送整个 HTML 文件?因此,我可以为电子邮件创建一个漂亮的模板,然后通过电子邮件发送该 .html 文件。

Sho*_*omz 5

不要忘记设置您的邮件标头以支持 HTML。

就 PHP 而言,它几乎是标准的:

$message = "<div>Hello! Here is an <span class='myClass'>email</span> message</div>";
Run Code Online (Sandbox Code Playgroud)

另请阅读有关heredoc和nowdoc的信息:http://www.php.net/manual/en/language.types.string.php。在编写长的多行消息时它们将非常有帮助。例如:

$message = <<<EOT
Hello!
Here is an <span class='myClass'>email</span> message!
EOT;
Run Code Online (Sandbox Code Playgroud)

对于引号,您需要使用反斜杠进行转义,如下所示:

$message = "Hello, \"people\"! Don't you know this is an email message";
Run Code Online (Sandbox Code Playgroud)

或者

$message = 'Hello, "people"! Don\'t you know this is an email message';
Run Code Online (Sandbox Code Playgroud)

请注意,使用双引号解析字符串内的 PHP 变量:

$x = 'world';
$message = "Hello $x"; // outputs: Hello world
$message = 'Hello $x'; // outputs: Hello $x
Run Code Online (Sandbox Code Playgroud)

您可能还想考虑对 PHP 字符串中的 HTML 实体进行编码/解码。这是一个好的开始: http: //php.net/htmlentities

关于模板,您始终可以创建一个包含模板消息的函数或包含文件,然后使用每条消息的自定义数据对其进行装饰。有很多方法可以实现这一目标。