简体   繁体   English

CakePHP电子邮件smtp无法发送

[英]CakePHP email smtp not sending

I'm having a problem with the CakePHP smtp not sending any email and I'm using the Google smtp service. 我在CakePHP smtp无法发送任何电子邮件时遇到问题,并且我在使用Google smtp服务。

The Cake Version that I'm using is CakePHP v2.4.1 我正在使用的Cake版本是CakePHP v2.4.1

After the user registers, it calls a CronJob and it runs an email function from within the ApiController. 用户注册后,它将调用CronJob,并从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 谢谢凯文

            $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();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM