GoDaddy主机PHP mail函数报HTTP 500及邮件发送问题求助
问题排查与解决
一、先修复HTTP 500错误(代码语法问题)
你的代码里有两个明显的语法错误,直接触发了500报错:
- 变量名拼写错误:
$headers = "From: $form";中的$form应为$from,你定义的发件人变量是$from,写错变量名会导致PHP致命错误 - 语句缺少分号:最后一行
echo "Email NOT sent"末尾没有加分号,PHP要求所有语句必须以分号结尾,这也是语法错误的原因之一
修正后的代码:
<?php $to = "shayankanwal667@gmail.com"; $subject = "Test mail"; $message = "Hi This is a test email you received from server"; $from = "clientsupport@shayankanwal.com"; $headers = "From: $from"; if(mail($to,$subject,$message,$headers)){ echo "Email sent"; }else{ echo "Email NOT sent"; } ?>
二、GoDaddy主机使用PHP mail函数的额外注意事项
即便修复语法错误,GoDaddy对邮件发送有特定限制,需留意:
- 发件人邮箱必须是GoDaddy托管域名下的有效邮箱,比如你用的
clientsupport@shayankanwal.com,要先在GoDaddy后台创建并激活该邮箱 - 部分GoDaddy主机需要在控制面板手动启用邮件发送功能,或检查php.ini中的
sendmail_path配置是否正确 - 若仍有问题,可在代码开头添加以下代码开启错误显示,以便查看具体报错信息:
error_reporting(E_ALL); ini_set('display_errors', 1);
三、PHP mail函数与SSL证书的关系
PHP mail函数本身不需要SSL证书,它调用服务器本地的邮件传输代理(如sendmail)发送邮件,默认通过非加密的25端口投递。只有当服务器的邮件传输代理需要通过SSL/TLS连接目标邮箱服务器时,才需要在代理层面配置SSL,这和PHP mail函数本身无关。GoDaddy默认的邮件传输代理一般已配置好基础投递通道,无需额外设置SSL。
内容的提问来源于stack exchange,提问作者Shayan Kanwal
相关产品推荐
相关产品推荐

