我试图收到一封电子邮件,从我的php页面发送到设置的电子邮件地址。
正在通过预期的电子邮件地址发送和接收电子邮件。但电子邮件中的内容并不像预期的那样。我从youtube上观看教程得到了代码。
然而,当查看电子邮件时,显示的信息与下面的代码完全相同,并未向我提供变量背后的值,例如$ name在电子邮件中显示为$ name
有什么想法吗?
使用的代码是;
<?php
require_once 'header.php';
$to = 'emailaddress ';
$subject = 'CSG';
$name = $_POST['name'];
$email = $_POST['emailaddress'];
$message = $_POST['message'];
$body = <<<EMAIL
Hi $name, You have recently requested a notification of your password on the Coleg Sir Gar Loan Syste site.
From $name
EMAIL;
$header = '$email';
if ($_POST){
mail($to, $subject, $body, $header);
$feedback = 'Email Sent';
}
?>
答案 0 :(得分:3)
首先,变量不会在单引号内解析,这就是为什么你看到$email
而不是电子邮件正文中的电子邮件本身。
因此,将$header = '$email';
更改为$header = "$email";
或完全删除引号。
即:$header = $email;
然后标题让你失望。它应该是From:
(电子邮件地址) - 您邮件中的“发件人”将作为您的服务器名称而不是发送者的(预期)电子邮件地址返回。
参考手册:
关于你的heredoc的旁注。
即使邮件外出,您的开场标识符仍有一个尾随空格:
$body = <<<EMAIL
这可能会引发Parse error: syntax error, unexpected '<<' (T_SL)
错误。
测试结果如下:
email@example.com Hi Fred, You have recently requested a notification of your password on the Coleg Sir Gar Loan Syste site. From Fred
和“发件人:”为default@cpanel.example.com
而不是whoever@example_mailer.xxx
。
正如dieend的评论中所述,您可以尝试支持变量{$var}
,无论是否使用它们,都会为我产生相同的结果。
如果仍然不起作用,那么它可能是由您的开场标识符中的尾随空格引起的; 您需要将其删除。
完全复制/粘贴如下所示:
$body = <<< EMAIL
Hi {$name}, You have recently requested a notification of your password on the Coleg Sir Gar Loan Syste site.
From {$name} - {$email}
EMAIL;
$header = "From:" . $email; // Now you have a valid From
if ($_POST){
mail($to, $subject, $body, $header);
echo $feedback = 'Email Sent';
}
最终说明: