我正在尝试用PHP发送邮件。我在CakePHP中用于发送邮件的代码如下所示。我在网页上收到“简单电子邮件已发送”消息,但邮件未发送到我的收件箱。我错过了什么吗?
to
,subject
和link
字段中的值使用在用户界面中输入的值进行设置。
$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');
}
答案 0 :(得分:2)
在Linux系统上,您可能已经安装了sendmail脚本,PHP将使用它。如果这是您所拥有的并且它不起作用,那么我会在您的Linux系统中查找邮件配置问题。
在Windows系统上,您需要配置希望PHP发送邮件的SMTP服务器。执行此操作的常规方法是在php.ini中。 The instructions for this are here
除非你设置了Email->,否则这对于CakePHP应该是相同的 - 它应默认为PHP使用的任何内容。
注意:如果您使用自己的Linux安装,可能只是您的ISP阻止了您的邮件服务器正在使用的端口25。在这种情况下,您需要配置linux以将电子邮件路由到ISP的电子邮件服务器。 Maybe this will help?
答案 1 :(得分:1)
什么时候'到'(第4行)是有效的目标电子邮件地址?
答案 2 :(得分:1)
您需要使用变量语法设置为“to”行和“subject”行。这些行应该是
$this->Email->to = to;
$this->Email->subject = subject;
另外,我相信电子邮件组件中有一个名为error的属性(我目前在文档中找不到它)可以帮助您进行调试。这可能不完全正确;我将电子邮件组件与SMTP一起使用,并且有一个属性由名为smtpError
的电子邮件组件设置。我相信有一个名为error
的名称可以用来检查错误 - 它应该包含能告诉你问题所在的代码。
如果这是一个不正确的陈述,您可以在尝试发送电子邮件后始终执行var_dump( $this->Email );
。这将转储对象的全部内容,因此您可以看到是否正确设置了属性,它可以帮助您找出错误属性的名称。