2014-01-13 234 views
-1

我有这样的PHP代码的邮件:PHP邮件不能正常工作

<?php 
$to  = '[email protected]'; 
$subject = 'Application for IGN '.$_POST["IGN"]; 
$message = 'Skype account: '.$_POST["skype"].'. IGN: '.$_POST["IGN"].'. Timezone: '.$_POST["Timezone"].'. Gender: '.$_POST["Gender"].' Livestreaming/Youtubing: '.$_POST["yt"].'. Accepts rules: '.$_POST["rules"]; 
$headers = 'From: [email protected]' . "\r\n" . 
    'Reply-To: [email protected]' . "\r\n" . 
    'X-Mailer: PHP/' . phpversion(); 

mail($to, $subject, $message, $headers); 
?> 

该网页加载罚款,但我不明白的电子邮件。

我检查了所有的$_POST变量,它们都很好。

+2

你有没有检查'mail(...)'的返回值?或者页面中的错误? (你*正在运行'error_reporting'和'display_errors'启动,对不对?) – cHao

+1

另外,你是否在PHP中配置SMTP设置?确保你没有使用SMTP认证。 – Raptor

+0

你的邮件()很好检查你的邮件服务器邮寄邮件设置 – railsbox

回答

1

该问题似乎并不来自您使用邮件功能的方式。

它似乎并不来自SMTP服务器的可用性或者,否则你会得到类似这样的消息:

Warning: mail() [function.mail]: Failed to connect to mailserver at "xxxx" 
port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() 
in C:\whatever\my_send_mail.php on line 293 

这可能,但是,来自一个身份验证问题。

您可能想在使用服务器之前使用虚拟SMTP服务器(如PaperCut)在本地测试邮件功能。
(这是我如何检查你的代码,顺便说一下)

当然,我无法检查您的$ _POST值的有效性,但如果他们证明是罪魁祸首,我会感到惊讶。
由于您只在主题和正文中使用它们,除非它们包含真正奇怪的内容,比如会让服务器混淆的一些SMTP协议,它们不应该成为问题。

如果本地发送有效,下一步将检查服务器上的PHP邮件程序配置。