为什么即使电子邮件被报告为已发送,也不通过PHP发送?

为什么即使电子邮件被报告为已发送,也不通过PHP发送?,php,email,cakephp,Php,Email,Cakephp,我正在尝试用PHP发送邮件。下面给出了我用来发送邮件的代码。我在我的网页上收到“发送简单电子邮件”的消息,但邮件未送达我的收件箱。我错过什么了吗 至、主题和链接字段中的值使用用户界面中输入的值进行设置 $this->set('to',$this->params['form']['to']); $this->set('subject',$this->params['form']['subject']); $this->set('link',$t

我正在尝试用PHP发送邮件。下面给出了我用来发送邮件的代码。我在我的网页上收到“发送简单电子邮件”的消息,但邮件未送达我的收件箱。我错过什么了吗

主题
链接
字段中的值使用用户界面中输入的值进行设置

    $this->set('to',$this->params['form']['to']);
    $this->set('subject',$this->params['form']['subject']);
    $this->set('link',$this->params['form']['link']);
    $this->Email->to      = to;
    $this->Email->subject = subject;
    $this->Email->from    = 'someperson@somedomain.com';
    $this->Email->delivery= 'mail';
    $this->Email->sendAs='text';
    $this->Email->template = 'simple_message';
    //$this->Email->send(link);
    if ( $this->Email->send(link) ) {

        $this->Session->setFlash('Simple email sent');
    } else {
        $this->Session->setFlash('Simple email not sent');
    }

在Linux系统上,您可能已经安装了sendmail脚本,PHP将使用该脚本。如果这是您所拥有的并且它不起作用,那么我会在您的Linux系统本身中查找邮件配置问题

在Windows系统上,需要配置希望PHP向其发送邮件的SMTP服务器。通常的方法是在php.ini中

除非您设置了Email->delivery,否则CakePHP应该是相同的-它应该默认为PHP使用的任何东西


注意:如果您正在使用自己的Linux安装,可能是您的ISP正在阻止邮件服务器正在使用的端口25。在这种情况下,您需要配置linux以将电子邮件路由到ISP的电子邮件服务器

在Linux系统上,您可能已经安装了sendmail脚本,PHP将使用它。如果这是您所拥有的并且它不起作用,那么我会在您的Linux系统本身中查找邮件配置问题

在Windows系统上,需要配置希望PHP向其发送邮件的SMTP服务器。通常的方法是在php.ini中

除非您设置了Email->delivery,否则CakePHP应该是相同的-它应该默认为PHP使用的任何东西


注意:如果您正在使用自己的Linux安装,可能是您的ISP正在阻止邮件服务器正在使用的端口25。在这种情况下,您需要配置linux以将电子邮件路由到ISP的电子邮件服务器

自何时起,“收件人”(第4行)是有效的目标电子邮件地址?

自何时起,“收件人”(第4行)是有效的目标电子邮件地址?

您需要使用变量语法设置为“收件人”行和“主题”行。这些行应该是

$this->Email->to      = to;
$this->Email->subject = subject;
此外,我相信电子邮件组件中有一个名为error的属性(我目前在文档中找不到它)可以帮助您进行调试。这可能并不完全正确;我将电子邮件组件与SMTP一起使用,并且有一个由电子邮件组件设置的属性,名为
smtpError
。我相信有一个叫做
error
的程序可以用来检查错误——它应该包含一些代码,告诉你问题所在


如果这是一个错误的陈述,你可以总是做一个
var\u转储($this->Email)尝试发送电子邮件后。这将转储对象的全部内容,因此您可以查看是否正确设置了属性,并且它将帮助您找出错误属性的名称。

您需要使用变量语法来设置为“to”行和“subject”行。这些行应该是

$this->Email->to      = to;
$this->Email->subject = subject;
此外,我相信电子邮件组件中有一个名为error的属性(我目前在文档中找不到它)可以帮助您进行调试。这可能并不完全正确;我将电子邮件组件与SMTP一起使用,并且有一个由电子邮件组件设置的属性,名为
smtpError
。我相信有一个叫做
error
的程序可以用来检查错误——它应该包含一些代码,告诉你问题所在


如果这是一个错误的陈述,你可以总是做一个
var\u转储($this->Email)尝试发送电子邮件后。这将转储对象的全部内容,以便查看是否正确设置了属性,它应该可以帮助您找到错误属性的名称。

我使用的是ubuntu 8.10,我还安装了发送邮件程序。只有当我使用$this->Email->delivery作为“smtp”选项时,它才会工作吗?Email->delivery应该默认为“mail”,这将使用我上面描述的PHP的mail()函数。那将是最方便携带的。不过,作为一种故障排除措施,我想尝试将其设置为“smtp”并设置Email->smtpOptions(如文档所示)不会有什么坏处。为了获得更持久的解决方案,我会研究您的操作系统,甚至您的ISP的邮件问题。很可能他们只是阻止了你的电子邮件-查看此线程了解更多信息我正在使用Ubuntu8.10,并且还安装了发送邮件程序。只有当我使用$this->email->delivery选项作为“smtp”时,它才会起作用吗?email->delivery应该默认为“mail”,这将使用我上面描述的PHP的mail()函数。那将是最方便携带的。不过,作为一种故障排除措施,我想尝试将其设置为“smtp”并设置Email->smtpOptions(如文档所示)不会有什么坏处。为了获得更持久的解决方案,我会研究您的操作系统,甚至您的ISP的邮件问题。很有可能他们只是阻止了你的电子邮件-查看此线程了解更多信息它只是一个从html文件传递到控制器的变量名。它包含用户键入的有效电子邮件地址。这是一种错误的编码样式,您应该使用$to和$subject。它只是一个从html文件传递到控制器的变量名。它包含用户键入的有效电子邮件地址。这是一种错误的编码样式,您应该使用$to和$subject。