【发布时间】:2020-02-21 20:20:16
【问题描述】:
我正在尝试通过 PHP 发送一封自动电子邮件,该电子邮件会打印一些预定义的变量。 如果我将 php 脚本直接写入主文件 (akkoord.php),它会按预期工作。但是,我想将脚本作为函数保存在单独的 php 文件 (email.php) 中,因为我也想将它包含在其他 php 文件中。 我将脚本保存为 email.php,将其转换为函数 mail(),并将 email.php 包含在 akkoord.php 中。该函数工作并发送一封电子邮件,但变量(我在 akkoord.php 中定义的)没有通过。我认为这将是一个范围问题,所以我将它们重新定义为 email.php 中的全局变量。但是,它仍然不起作用。
(简化)Akkoord.php:
<html>
<head>
<?php
$naam = $_GET["naam"];
$reisnaam = $_GET["reisnaam"];
?>
<?php
include'email.php';
[some other code that works fine]
email();
?>
</head>
<body>
[some body]
</body>
</html>
还有email.php:
global $reisnaam;
function email(){
global $reisnaam;
global $naam;
$to = 'my_email@email.my';
$subject = $reisnaam ;
$message = 'Hello'.$naam;
$headers = 'From: some@body.nn';
if(mail($to, $subject, $message, $headers))
echo "Mail sent";
else
$fout .= "Not sent";
}
?>
我检查了是否包含 email.php - 它是(毕竟,它确实发送了电子邮件)。函数 email() 的同上。 关于我哪里出错的任何想法?
*edit: 修复了 $headers 中的 '
【问题讨论】:
-
您是否有理由使用全局变量而不是将其作为参数传递给函数?
-
将
global放在函数之外没有任何作用。 -
您在这个
$headers = 'From: some@body.nn;中也有一个解析错误。如果您发布的不是“那个”,那么请....发布您的真实代码。 -
$fout .= "Not sent"; -
我尝试不使用“global”,并在不同的地方使用“global”,即使它没有意义。我认为它甚至应该在没有“全局”的情况下工作,因为我预计 akkoord.php 中的变量默认是全局的。我没有将它作为参数传递,因为我想添加更多应该出现在电子邮件中的变量,并且我认为这种方法会更容易(但仔细想想;它可能不会......)。 $fout 在 akkoord.php 中声明(但我忘记在此处包含它,因为 akkoord.php 的其余部分与此问题无关)。