I'm having a problem with the CakePHP smtp not sending any email and I'm using the Google smtp service.
The Cake Version that I'm using is CakePHP v2.4.1
After the user registers, it calls a CronJob and it runs an email function from within the ApiController.
Here is the function that it is calling:
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();
}
}
The problem is that no emails is being sent out why would that be the case.
Thank you, Kevin