0

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

和字段to中的值使用在用户界面中输入的值进行设置。subjectlink

    $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');
    }
4

3 回答 3

2

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

在 Windows 系统上,您需要配置您希望 PHP 向其发送邮件的 SMTP 服务器。执行此操作的正常方法是在 php.ini 中。 这方面的说明在这里

除非你设置了 Email->delivery,这对于 CakePHP 应该是一样的——它应该默认为 PHP 使用的任何东西。

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

于 2009-04-02T07:24:03.237 回答
1

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

$this->Email->to      = to;
$this->Email->subject = subject;

另外,我相信电子邮件组件中有一个名为 error 的属性(我目前在文档中找不到它)可以帮助您调试。这可能并不完全正确;我将电子邮件组件与 SMTP 一起使用,并且电子邮件组件设置了一个名为smtpError. 我相信有一个调用error可以用来检查错误——它应该包含可以告诉你问题所在的代码。

如果这是一个不正确的陈述,您可以var_dump( $this->Email );在尝试发送电子邮件后随时执行。这将转储对象的全部内容,因此您可以查看是否正确设置了属性,它应该可以帮助您找出错误属性的名称。

于 2009-04-02T14:44:57.233 回答
1

从什么时候'to'(第 4 行)成为有效的目标电子邮件地址?

于 2009-04-02T10:15:28.770 回答