我已经阅读了关于PHP的mail()函数以及如何调试它的高度赞成的SO答案。但是,我的客户目前与DreamHost有一个共享主机方案,我无法访问他的DH帐户或主机服务器,所以我无法调试(或者我发现它很难调试) PHP的邮件功能。
mail()返回true,但邮件永远不会发送。阅读完这些答案后,我知道我必须编辑php.ini,重新配置一些设置,或安装/更改某些软件。不幸的是,我对服务器的访问非常有限(读取:否)。
我应该如何调试php?我应该尝试联系DH客户支持吗?我忽略了什么吗? 另外,我不知道如何处理错误报告。我这样做了吗? (这是我第一次使用PHP;我是Java开发人员)
供参考:
PHP:
`$errors = '';
$proceed = True;
error_reporting(E_ALL);
ini_set('display_errors', '1');
$myemail = 'myemail@hotmail.com';//I've Tried Hotmail and Gmail
if(empty($_POST['name']) ||
empty($_POST['email']) ||
empty($_POST['message']))
{
$errors .= "\n Error: all fields are required";
$proceed = False;
}
$name = $_POST['name'];
$email_address = $_POST['email'];
$message = $_POST['message'];
if (!preg_match(
"/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i",
$email_address))
{
$errors .= "\n Error: Invalid email address";
$proceed = False;
}`
$mailNotFailure = False;
if($proceed)
{
$to = $myemail;
$email_subject = "Contact form submission: $name";
$email_body = "You have received a new message. ".
" Here are the details:\n Name: $name \n ".
"Email: $email_address\n Message \n $message";
$headers = "From: $myemail\n";
$headers .= "Reply-To: $email_address \n";
$mailNotFailure = mail($to,$email_subject,$email_body,$headers);
phpinfo();
//redirect to the 'thank you' page
}
else
{
//header('Location: contact.html');
}
if ($mailNotFailure)
{
//header('Location: index.html');
}
else
{
//header('Location: contact.html');
}`
可以找到phpinfo()here。
另外,我为PHP代码格式化道歉。这是他第一次给我一个艰难的时间。我必须将单个脚本包含为两个块。请原谅。