Как ввести переменные php в html почту - PullRequest
1 голос
/ 05 июля 2011

Привет! Я пытаюсь отправить HTML-письмо через веб-форму PHP. Форма работает нормально, и если я передаю переменные, такие как $ name, $ address, в сообщение, оно проходит нормально, но когда я пытаюсь отформатировать его с помощью HTML, я не могу передать эти переменные в сообщение. Это пример кода, который я нашел в w3schools, но я не могу настроить его так, чтобы он делал то, что я хочу:

<?php
....
$to = "somebody@example.com, somebodyelse@example.com";
$subject = "HTML email";

$message = "
<html>
<head>
<title>HTML email</title>
</head>
<body>
<p>This email contains HTML Tags!</p>
<table>
<tr>
<th>Firstname</th>
<th>Lastname</th>
</tr>
<tr>
<td>John</td>
<td>Doe</td>
</tr>
</table>
</body>
</html>
";
 ....
?>

Я пытаюсь передать переменную $ name, где написано «Джон Доу», и, думаю, как только я это выясню, я смогу пройти через все остальные мои переменные.

Заранее спасибо за вашу помощь.

Ответы [ 4 ]

1 голос
/ 05 июля 2011
$message = "
  <html>
<head>
<title>HTML email</title>
</head>
<body>
<p>This email contains HTML Tags!</p>
<table>
<tr>
<th>Firstname</th>
<th>Lastname</th>
</tr>
<tr>
<td>".$firstname."</td>
<td>".$lastname."</td>
</tr>
</table>
</body>
</html>
";
0 голосов
/ 05 июля 2011

Вы можете сделать это просто так:

$message = "
<html>
...
<tr>
<td>".htmlspecialchars($name)."</td>
</tr>
...
</html>
";

Это очень импорт , чтобы избежать содержимого, которое не контролируется вами (то есть собрано из формы), чтобы предотвратить инъекционные атаки,В этом случае мы используем htmlspecialchars.

0 голосов
/ 05 июля 2011

Чтобы получить переменные в сообщении, если вы используете двойные кавычки, вы должны просто включить переменную в строку:

например,

$message = "
<html>
...
<tr>
<td>$name</td>
</tr>
...
</html>
";

Выможет также вырваться из строки

$message = "
<html>
...
<tr>
<td>".$name."</td>
</tr>
...
</html>
";

, которая будет работать с одинарными или двойными кавычками (лично я предпочитаю этот метод с одинарными кавычками).

Однако, когда вы получите это письмо, вы увидите необработанный HTML.Для правильного отображения html вам необходимо установить соответствующие заголовки почты.Есть примеры того, как это сделать здесь и здесь

0 голосов
/ 05 июля 2011

Вы должны разделить имя на две одинаковые переменные, например $first_name и $second_name.Это возможно сделать следующим образом:

<?php

$split_names = explode(' ', $name); // assuming you have a space between both

$first_name = $split_names[0];
$last_name = $split_names[1];

?>

Тогда вы можете сделать это:

$message = "
<html>
<head>
<title>HTML email</title>
</head>
<body>
<p>This email contains HTML Tags!</p>
<table>
<tr>
<th>Firstname</th>
<th>Lastname</th>
</tr>
<tr>
<td>" . $first_name . "</td>
<td>" . $second_name . "</td>
</tr>
</table>
</body>
</html>
";
 ....
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...