0

我希望以 HTML 格式发送一封电子邮件,并且在这封电子邮件中我需要从 php 表单传递数据。电子邮件作为 html 电子邮件成功发送,但不显示从 PHP VARIABLE 传递的数据。

$name = "PHP TEXT";
$headers = "From: " ."mail@example.com" . "\r\n";
$headers .= "Reply-To: ". "mail@example.com" . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

$message = "<html><body><h1>HTML TEXT <?php echo $name; ?></h1></body></html>";

$email_to = 'example@mail.com'; //the address to which the email will be sent
$subject = "test";
$email    =   "example@mail.com";

if (mail($email_to, $subject, $message, $headers)) {
    echo 'sent'; // success      
} else {
    echo 'failed'; // failure    
}
4

5 回答 5

5

这一行:

$message = "<html><body><h1>HTML TEXT <?php echo $name; ?></h1></body></html>";

它应该是这样的:

$message = "<html><body><h1>HTML TEXT $name </h1></body></html>";

或者

$message = "<html><body><h1>HTML TEXT " . $name . " </h1></body></html>";

<?php?>用于指定其中的文本是 PHP 代码,而不是 HTML。这里有一些关于它的细节。

但是您已经在 PHP 代码块中,而不是指定另一个 PHP 块,您应该使用字符串连接。

于 2012-12-25T09:47:41.060 回答
2

您没有在脚本中使用任何表单值。你知道 $_POST 或 $_GET 是如何工作的吗?

您将 $name 设置为硬编码值,因此当您使用它时它始终是该值,而且,由于您使用 PHP 创建字符串,因此您不需要在这一行中回显 php。即(因为您使用的是双引号)

$message = "<html><body><h1>HTML TEXT $name;</h1></body></html>";

因此,如果您可以发布您的 HTML 表单,您的 $name 分配可能类似于

$name  = $_POST['name']

但强烈建议您清理和验证所有用户提供的信息。这应该是一个相当简单的谷歌搜索。

于 2012-12-25T09:48:38.220 回答
1

另一种解决方案可以是关闭 " 之前喜欢

$message = "<html><body><h1>HTML TEXT ".$name." how are you?</h1></body></html>";

无需启动和关闭 PHP,因为您已经在 PHP 工作区中。

于 2012-12-25T09:47:03.247 回答
1

试试这个..

$message = "<html><body><h1>HTML TEXT".$name."</h1></body></html>";

您正在将 分配html给 php 变量。所以你不必echo在那里变量..只需使用适当的连接

于 2012-12-25T09:48:16.933 回答
1

$message 变量本身被错误地使用了。

$message = "<html><body><h1>HTML TEXT <?php echo $name; ?></h1></body></html>";

它应该是

$message = "<html><body><h1>HTML TEXT  $name </h1></body></html>";

或这个:

$message = "<html><body><h1>HTML TEXT ".$name." </h1></body></html>";
于 2012-12-25T10:16:38.157 回答