蛋糕php电子邮件助手 - 内部错误

时间:2012-05-07 18:33:49

标签: cakephp cakephp-2.0

我正在尝试使用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。

3 个答案:

答案 0 :(得分:2)

取消注释extension=php_openssl.dll中的行php.ini。这将解决您的Socket问题。

我想说的另一件事是:

你正在混合两个核心库&组件都。 FYI

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

有关详细信息,请查看此链接http://book.cakephp.org/2.0/en/core-utility-libraries/email.html

答案 1 :(得分:1)

调试异常。

我打赌你无法打开与邮件服务器的连接。看起来更像是使用CakePHp设置邮件服务器或连接错误。

对于Windows的简单邮件服务器设置,我建议您使用XAMPP,它附带预配置的邮件服务器Pegasus,对我来说简单快捷。

答案 2 :(得分:1)

这确实看起来像是您的邮件服务器设置或与其连接的错误。但是,您正在混淆CakeComponent的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

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

无论如何,使用默认的电子邮件配置是可以的。阅读CakeEmail课程上的CakePHP Book部分。