【问题标题】:cake php email helper - internal errorcake php 电子邮件助手 - 内部错误
【发布时间】:2012-05-16 06:19:03
【问题描述】:

我正在尝试使用 cake php 电子邮件组件发送电子邮件:

var $components = array('Email');

$email = new CakeEmail();
$email->from(array('me@example.com' => 'My Site'));
$email->to('xxx@gmail.com');
$email->subject('About');
$email->send('My message');

而且我总是收到消息:无法发送电子邮件。发生内部错误。 在错误日志中有“SocketException”。

我使用的是 cakephp 2.0。

我应该如何配置才能让它工作?我不想使用任何 smtp 服务器等,我只想发送简单的电子邮件。

我在我的电脑上使用 WAMP。

【问题讨论】:

  • 你能用一个简单的 php 脚本(不涉及任何 CakePHP)发送电子邮件吗?
  • 当你最终使用 lib 时,为什么要包含一个组件?另外 - 如果您不知道该怎么做,使用 windows 而不是使用 smtp 是一件很难设置的事情。为什么不使用简单的方法(smtp 只有 4 个配置字符串)。

标签: cakephp cakephp-2.0


【解决方案1】:

调试异常。

我敢打赌,您无法打开与邮件服务器的连接。看起来更像是您的邮件服务器设置或与它的连接错误,而不是 CakePHp。

对于 Windows 的简单邮件服务器设置,我建议您使用 XAMPP,它带有预配置的邮件服务器 Pegasus,对我来说工作起来既简单又快速。

【讨论】:

    【解决方案2】:

    这看起来确实是您的邮件服务器设置或与其连接的错误。但是,您混淆了 EmailComponent 的 CakeEmail 类。

    首先,您不是尝试使用 emailComponent 发送电子邮件,而是使用新的 CakeMail 类(2.x 中的新类)。 因此,这是:

    var $components = array('Email');
    

    还有这个:

    $email = new CakeEmail();
    

    是两个不同的东西。第一个加载 EmailComponent,但您根本没有使用它。从 2.x 开始的 EmailComponent 已被弃用。在您的示例中,您使用的是 CakeEmail 类。

    首先,您应该确保该类已实际加载:

    App::uses('CakeEmail', 'Network/Email');
    

    然后检查是否有配置文件在:

    App/Config/email.php
    

    我想您当前正在使用默认配置选项。这意味着默认传输是“邮件” - PHP ma​​il 函数。我想你得到一个 SocketException,因为它无法连接到底层邮件传输代理,并且因为它试图通过系统套接字来连接......(我认为不存在在 Windows 中,但我可能是错的。我确定 Windows API 中有类似的东西用于进程间通信)

    无论如何,使用默认电子邮件配置是可以的。阅读 CakePHP 书籍中关于 CakeEmail 类的部分。

    【讨论】:

      【解决方案3】:

      取消注释该行:extension=php_openssl.dll in php.ini。这将解决您的套接字问题。

      还有一点我想说的是:

      您正在混合两个核心库和组件。仅供参考

      EmailComponent 现在已被弃用。所以请改用核心库。

      更多详情请查看此链接http://book.cakephp.org/2.0/en/core-utility-libraries/email.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-09
        • 2012-02-05
        • 2014-07-05
        • 2014-06-23
        • 2011-11-14
        相关资源
        最近更新 更多