CakePHP电子邮件smtp不发送
我遇到了CakePHP smtp没有发送任何电子邮件的问题,我正在使用Google smtp服务。CakePHP电子邮件smtp不发送
,我使用的蛋糕版本是V2.4.1的CakePHP
用户注册后,它会调用一个cronjob,并从ApiController内运行的电子邮件功能。
这里是它调用函数:
public function processEmailQueue(){
ScriptLockComponent::lock(__FUNCTION__);
$emails = $this->Email->find('all', array(
'conditions' => array(
'Email.status' => Email::STATUS_NOT_SEND,
'Email.instance_id' => ''
),
'recursive' => 1,
'order' => array('Email.priority DESC'),
'limit' => self::BATCH_LIMIT
)
);
// creating new email object
$cakeEmail = new CakeEmail();
$date = new DateTime();
foreach ($emails as $emailData) {
$cakeEmail->reset();
$priorityValue = intval($emailData["Email"]["priority"]) + 1;
//Getting email template from database
$emailManagement = $this->EmailTemplate->getEmailTemplate($emailData["Email"]["email_template_id"], json_decode($emailData["Email"]["content"], TRUE));
// setting email configurations, and sending email
// setting unsubscribe url in the mail footer
$templateId = $emailData["Email"]["email_template_id"];
if (in_array($templateId, $this->emailTemplateIds)) {
$autoLoginToken = $this->Otp->createOTP(array(
'email' => $emailData["Email"]["to_email"]
));
$email = base64_encode($emailData["Email"]["to_email"]);
$unsubscribeUrl = Router::Url('/', TRUE) . 'unsubscribe?setting=' .$templateId. '&auto_login_token=' . $autoLoginToken .'&email=' . $email ;
} else {
$unsubscribeUrl = '';
}
try {
$cakeEmail->config('gmail')
//->template('default')
->viewVars(array('unsubscribe' => $unsubscribeUrl))
->emailFormat('html')
->to($emailData["Email"]["to_email"])
->subject($emailManagement['EmailTemplate']['template_subject'])
->setHeaders(array('List-Unsubscribe' => $unsubscribeUrl))
->send($emailManagement['EmailTemplate']['template_body']);
$this->Email->set(array(
'id' => $emailData["Email"]["id"],
'sent_date' => $date->format('Y-m-d h:i:s'),
'status' => Email::STATUS_SEND
));
$this->Email->save();
} catch (Exception $e) {
$this->Email->set(array(
'id' => $emailData["Email"]["id"],
'priority' => $priorityValue,
'status' => Email::STATUS_NOT_SEND
));
$this->Email->save();
}
}
的问题是,没有电子邮件被发送出去,为什么会是这样的情况。
谢谢 凯文
$this->Email->set(array(
'id' => $emailData["Email"]["id"],
'sent_date' => $date->format('Y-m-d h:i:s'),
'status' => Email::STATUS_SEND
));
///////HERE //////////
$this->Email->send();
////////////////////
} catch (Exception $e) {
$this->Email->set(array(
'id' => $emailData["Email"]["id"],
'priority' => $priorityValue,
'status' => Email::STATUS_NOT_SEND
));
$this->Email->save();
这就是我所做的,但仍然没有。 –
它应该是'$ cakeEmail-> send()',而不是'$ this-> Email-> send()'。 – ndm
看起来你是对的 – CodeIsLife
你得到任何错误信息或回报? – CodeIsLife
根本没有错误信息或退货。 –
last LoC this-> Email-> save();用send()代替 – CodeIsLife