我正在Slim 3项目内的联系表格中发送邮件发送功能
我从 $ request-> getParams()获取名称,电子邮件和消息字段数据,然后放置它将$ email_message直接发送到我的电子邮箱。电子邮件未送达。
有趣的是,没有getParams()数据(我只是将其替换为任何字符串),电子邮件将被传递并且我会收到它。所以可能邮件语法是正确的,并且我的主机上启用了电子邮件
如果我在mail()代码之前回显了该消息,它会正确地打印出消息,从而接收来自表单的数据。
所以我无法弄清楚这里出了什么问题。
我尝试使用 print_r(error_get_last())但它只返回一个空白页面。
请有人帮忙吗?非常感谢!
我的代码:
$data = $request->getParams();
$name = $data['name'];
$email_from = $data['email'];
$message = $data['message'];
$email_message = "Name: ".$name."Message: ".$message;
$email_to = "myemail@email.com";
$email_subject = "Message from website";
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
$send = mail($email_to, $email_subject, $email_message, $headers);
if($send)
{
echo 'Sent!';
} else {
print_r(error_get_last());
}
die();
更新:现在它打印出来了!'发送!',但仍然没有收到任何电子邮件到我的电子邮件地址。
对于将此标记为重复的人,我也会阅读该答案,但不会成功。这个问题是不同的,因为它DID发送电子邮件没有从联系表单传递数据,只有在添加了getParams()数据时才会出现问题。所以我希望有Slim或PHP经验的人可以提供帮助。如果你真的不明白这个问题,请不要将其标记为重复。
答案 0 :(得分:1)
99.9%的人试图用PHP邮寄放弃。
PHP只为您完成一半的工作,它会格式化外发电子邮件,但它不会执行实际发送。什么那么它取决于你正在使用的操作系统,即使这样,它还取决于你想要使用的邮件服务器。
我只为Debian / Linux设置了这个环境。我安装postfix(apt install postfix
),配置它,然后启动该过程。只有这样mail
功能才有效。但是,它仍然可能会被某些电子邮件服务器(即gmail)拒绝,因为它未加密。
祝你好运。