2012-08-22 43 views
0

我是新来的PHP,请耐心等待。我创建了一个我正在创建的测试网站的注册。该网站收集用户信息,然后发送确认电子邮件。到目前为止,多次尝试后都没有收到邮件。我已经尝试过垃圾邮件文件夹,但无济于事。初学者PHP:Mail()函数不工作

这里是我的代码:

$to = "$email"; 
    // Change this to your site admin email 
    $from = "[email protected]"; 
    $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); 

提前感谢!

P.S.我已经在线阅读了一个php.ini文件夹。我从头创建一个网站,不知道这是什么或如果它是必要的。另外,我正在使用没有电子邮件地址的免费托管服务。我不确定这是否会影响它。

+0

您是否可以访问任何可能会告诉您哪里出错的错误日志? – Chiubaka

+0

您是否正在使用在Windows上运行的服务器进行测试?另外,'mail()'的最后一个参数前的'-f'是什么?你不能在那里。无论如何,您已经在'$ headers'中拥有发件人地址。 –

+1

localhost?共享主机? VPS? – 2012-08-22 00:26:56

回答

0

编辑:正如评论指出的那样,您的代码没有正确定义$to并且有语法错误。


确保您的SMTP服务器配置正确。这是用于发送(并接收但不适用)电子邮件的服务器,如果它们提供电子邮件,则它的位置可能会写入托管服务的帮助/常见问题部分。

php.ini 文件用于定义PHP服务器的环境变量,例如SMTP服务器的位置。这些设置也可以从PHP内部配置

ini_set('SMTP', 'smtp.example.com'); 
ini_set('sendmail_from', '[email protected]'); 
ini_set('smtp_port','25'); 

修改您的主机提供商描述的域名,用户电子邮件和端口号。

+0

几年前,我记得花了这么长时间试图弄清楚为什么'mail()'函数不工作,直到我发现这个令人讨厌的** sendmail_from **设置:)干杯! – inhan