初学者PHP:Mail()函数不起作用

初学者PHP:Mail()函数不起作用,php,email,smtp,gmail,Php,Email,Smtp,Gmail,我是新来的php,所以请容忍我。我已经为我正在创建的测试网站创建了注册。该网站收集用户信息,然后发送确认电子邮件。到目前为止,几次尝试后都没有收到电子邮件。我试过垃圾邮件文件夹,但没有用 这是我的密码: $to = "$email"; // Change this to your site admin email $from = "someperson@gmail.com"; $subject = "Complete your registration"; //B

我是新来的php,所以请容忍我。我已经为我正在创建的测试网站创建了注册。该网站收集用户信息,然后发送确认电子邮件。到目前为止,几次尝试后都没有收到电子邮件。我试过垃圾邮件文件夹,但没有用

这是我的密码:

$to = "$email";
    // Change this to your site admin email
    $from = "someperson@gmail.com";
    $subject = "Complete your registration";
    //Begin HTML Email Message where you need to change the activation URL inside
    $message = '<html>
    <body bgcolor="#FFFFFF">
    Hi ' . $username . ',
    <br /><br />
    You must complete this step to activate your account with us.
    <br /><br />
    Please click here to activate now &gt;&gt;
    <a href="http://testw.freevar.com/activation.php?id=' . $id . '">
    ACTIVATE NOW</a>
    <br /><br />
    Your Login Data is as follows: 
    <br /><br />
    E-mail Address: ' . $email . ' <br />
    Password: ' . $password . ' 
    <br /><br /> 
    Thanks! 
    </body>
    </html>';
    // end of message
    $headers = "From: $from\r\n";
    $headers .= "Content-type: text/html\r\n";
    $to = "$to";
    // Finally send the activation email to the member
    mail($to, $subject, $message, $headers,-f $from);
$to=“$email”;
//将此更改为您的站点管理员电子邮件
$from=”someperson@gmail.com";
$subject=“完成注册”;
//开始HTML电子邮件消息,您需要在其中更改激活URL
$message='1
嗨$用户名。“,


您必须完成此步骤才能激活您在我们的帐户。

请单击此处立即激活

您的登录数据如下:

电子邮件地址:'$电子邮件。”
密码:'$密码。”

谢谢 '; //消息结束 $headers=“From:$From\r\n”; $headers.=“内容类型:text/html\r\n”; $to=“$to”; //最后将激活电子邮件发送给会员 邮件($to,$subject,$message,$headers,-f$from);
提前谢谢


另外,我在网上读到了关于php.ini文件夹的文章。我正在从头开始创建一个网站,不知道这是什么,也不知道是否有必要。此外,我正在使用一个免费的托管服务,没有电子邮件地址。我不确定这是否会影响它。

编辑:正如评论所指出的,您的代码没有正确定义
$to
,并且有语法错误。
确保SMTP服务器配置正确。这是用于发送(和接收但不适用)电子邮件的服务器,其位置可能会写在托管服务的“帮助/常见问题解答”部分的某个位置(如果提供)。

ini文件用于定义php服务器的环境变量,例如SMTP服务器的位置。这些设置也可以通过在PHP中进行配置

ini_set('SMTP', 'smtp.example.com');
ini_set('sendmail_from', 'user@example.com');
ini_set('smtp_port','25');

按照主机提供商的说明修改域名、用户电子邮件和端口号。

您是否有权访问任何可能会告诉您出了什么问题的错误日志?您是否碰巧在Windows上运行的服务器上进行了测试?另外,在
mail()
的最后一个参数之前的
-f
是什么?你不能把它放在那里。您在
$headers
中已经有了发件人地址。我的第一个问题是,$to在哪里定义?我看到了
$to=$to
$to=$email
但是什么是
$email
?mail函数中的“-f”是什么?$email设置在哪里?几年前,我记得我花了很长时间试图弄清楚为什么
mail()
函数不起作用,直到我从设置中发现这个讨厌的sendmail:)干杯!