php mail()没有发送瘦3 getParams()数据

时间:2017-03-31 14:08:37

标签: php email slim-3


我正在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经验的人可以提供帮助。如果你真的不明白这个问题,请不要将其标记为重复。

1 个答案:

答案 0 :(得分:1)

99.9%的人试图用PHP邮寄放弃。

PHP只为您完成一半的工作,它会格式化外发电子邮件,但它不会执行实际发送。什么那么它取决于你正在使用的操作系统,即使这样,它还取决于你想要使用的邮件服务器。

我只为Debian / Linux设置了这个环境。我安装postfix(apt install postfix),配置它,然后启动该过程。只有这样mail功能才有效。但是,它仍然可能会被某些电子邮件服务器(即gmail)拒绝,因为它未加密。

祝你好运。

相关问题