【发布时间】:2011-01-01 15:43:19
【问题描述】:
我是 CakePHP 的新手,正在拼命学习!
我最近的挣扎是电子邮件组件。
我有一份合同。当我创建合同时,我添加了一个用户。当我第一次保存新合同时……我想向该合同中的用户发送一封电子邮件,允许他们单击返回合同的链接,然后接受或拒绝合同。
我如何发送这封电子邮件?
我能得到的细节越多,答案就越好。我在那里读到的所有内容都令人惊讶地令人困惑。我需要配置 smtp 设置吗?保存合同后如何在合同中获取用户并将其和合同链接传递到电子邮件中?我如何知道电子邮件是否已发送,而无需每次都检查我的电子邮件?
这是我在contracts_controller.php 中用于电子邮件发送功能的代码:(一个合同属于一个用户,一个用户有很多合同。)
function _sendContractEmail($id) {
$this->Email->smtpOptions = array(
'port'=>'465',
'timeout'=>'30',
'host'=>'ssl://smtp.gmail.com',
'username'=>'username',
'password'=>'password'
);
$this->Email->delivery = 'smtp';
$User = $this->Contract->User->read(null,$id);
$this->Email->to = 'jeremiah@jeremiahotis.com';
$this->Email->subject = '';
$this->Email->replyTo = 'no-reply@goodvaluation.com';
$this->Email->from = 'Jeremiah Oits <jeremiah@jeremiaotis.com>';
$this->Email->template = 'simple_message';
$this->Email->sendAs = 'html';
$this->set('User', $User);
$this->Email->_debug = true;
$this->Email->send('Test Email');
$this->redirect(array('controller'=>'contracts', 'action'=>'index'));
}
这是我在contracts_controller.php add() 函数中的代码:
function add() {
if (!empty($this->data)) {
$this->Contract->create();
if ($this->Contract->save($this->data)) {
$this->Session->setFlash(__('The Contract has been saved', true));
$this->_sendContractEmail($this->Contract->User->id);
} else {
$this->Session->setFlash(__('The Contract could not be saved. Please, try again.', true));
}
而且,这是在我的contracts_controller.php 文件顶部的$name 和$helpers 之后:
var $components = array('Email');
我想我应该指出我在使用模板时遇到了问题,所以为了测试它,我将电子邮件正文直接包含在 send() 中,并且我指定了收件人电子邮件地址而不是使用变量。依然没有!没有错误,没有电子邮件。
任何帮助将不胜感激!我真的不知道我做错了什么!
谢谢,
耶利米
【问题讨论】:
-
普通的php邮件能用吗?你有 smtp 服务器设置吗?这可能是一个常规的 php 配置问题,而不是特定于蛋糕的问题。
-
检查 /app/tmp/logs/ 下的错误日志