从php页面发送电子邮件

时间:2016-05-29 13:54:59

标签: php

我试图收到一封电子邮件,从我的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';
}

?>

1 个答案:

答案 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';
}

最终说明:

  • 如果仍然无法解决问题,那么我就无法重现。