我遇到了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();
}
}
的問題是,沒有電子郵件被髮送出去,爲什麼會是這樣的情況。
謝謝 凱文
你得到任何錯誤信息或回報? – CodeIsLife
根本沒有錯誤信息或退貨。 –
last LoC this-> Email-> save();用send()代替 – CodeIsLife