PHP邮件发送报错:sendmail_from未配置或From头缺失
解决PHP mail()函数的"sendmail_from未设置"警告
1. 修正邮件头格式
你的代码中$sender = "From : $email";的格式不符合邮件头标准,From和冒号之间的空格会导致识别失败。修改为标准格式,同时添加必要的辅助头字段:
// 修正后的邮件头,用\r\n分隔多个字段 $headers = "From: $email\r\n"; $headers .= "Reply-To: $email\r\n"; $headers .= "X-Mailer: PHP/" . phpversion();
替换原代码中的$sender变量,确保mail()函数能正确识别From头。
2. 配置php.ini默认发件人(可选)
若不想在代码中每次指定From头,可修改php.ini设置全局默认发件人:
- 打开XAMPP目录下的
php/php.ini(路径:C:\xampp\php\php.ini) - 找到
sendmail_from项,去掉开头的分号注释,设置你的邮箱:
sendmail_from = your-default-email@example.com
- 重启XAMPP的Apache服务使配置生效。
3. 配置XAMPP的sendmail服务(Windows环境必做)
Windows下XAMPP依赖sendmail组件发送邮件,需正确配置sendmail.ini:
- 打开
C:\xampp\sendmail\sendmail.ini - 根据你的邮箱服务商填写SMTP信息,以Gmail为例:
smtp_server=smtp.gmail.com smtp_port=587 smtp_ssl=tls auth_username=your-gmail@gmail.com auth_password=your-app-specific-password force_sender=your-gmail@gmail.com
注:Gmail需要开启两步验证后使用应用专用密码,而非原账号密码。
- 重启Apache服务。
修改后的完整代码示例
$reciver = "myemail@gmail.com"; $subject = "Form : $name <$email>"; $body = "Name : $name \n Email : $email \n Phone : $phone \n Website : $website"; $headers = "From: $email\r\n"; $headers .= "Reply-To: $email\r\n"; $headers .= "X-Mailer: PHP/" . phpversion(); if(mail($reciver, $subject, $body, $headers)){ echo "Message sent successfully!"; } else { echo "Failed To Send Your Message !"; }
内容的提问来源于stack exchange,提问作者Mohammad Dayarneh
相关产品推荐
相关产品推荐

