示例#1
0
 /**
  * mailer method
  *
  * @param array $data Dados para formar o email.
  * @return boolean True ou False.
  */
 public function mailer($data, $template, $subject)
 {
     $email = new Email();
     $email->transport('mailSgl');
     $email->emailFormat('html');
     $email->template($template);
     $email->from('*****@*****.**', 'SGL');
     $email->to($data['email'], $data['nome']);
     $email->viewVars($data);
     $email->subject($subject);
     $email->send();
 }
 /**
  * @return void
  */
 public function testSendWithEmail()
 {
     $config = ['transport' => 'queue', 'charset' => 'utf-8', 'headerCharset' => 'utf-8'];
     $this->QueueTransport->config($config);
     $Email = new Email($config);
     $Email->from('*****@*****.**', 'CakePHP Test');
     $Email->to('*****@*****.**', 'CakePHP');
     $Email->cc(['*****@*****.**' => 'Mark Story', '*****@*****.**' => 'Juan Basso']);
     $Email->bcc('*****@*****.**');
     $Email->subject('Testing Message');
     $Email->attachments(['wow.txt' => ['data' => 'much wow!', 'mimetype' => 'text/plain', 'contentId' => 'important']]);
     $Email->template('test_template', 'test_layout');
     $Email->subject("L'utilisateur n'a pas pu être enregistré");
     $Email->replyTo('*****@*****.**');
     $Email->readReceipt('*****@*****.**');
     $Email->returnPath('*****@*****.**');
     $Email->domain('cakephp.org');
     $Email->theme('EuroTheme');
     $Email->emailFormat('both');
     $Email->set('var1', 1);
     $Email->set('var2', 2);
     $result = $this->QueueTransport->send($Email);
     $this->assertEquals('Email', $result['job_type']);
     $this->assertTrue(strlen($result['data']) < 10000);
     $output = json_decode($result['data'], true);
     $emailReconstructed = new Email($config);
     foreach ($output['settings'] as $method => $setting) {
         call_user_func_array([$emailReconstructed, $method], (array) $setting);
     }
     $this->assertEquals($emailReconstructed->from(), $Email->from());
     $this->assertEquals($emailReconstructed->to(), $Email->to());
     $this->assertEquals($emailReconstructed->cc(), $Email->cc());
     $this->assertEquals($emailReconstructed->bcc(), $Email->bcc());
     $this->assertEquals($emailReconstructed->subject(), $Email->subject());
     $this->assertEquals($emailReconstructed->charset(), $Email->charset());
     $this->assertEquals($emailReconstructed->headerCharset(), $Email->headerCharset());
     $this->assertEquals($emailReconstructed->emailFormat(), $Email->emailFormat());
     $this->assertEquals($emailReconstructed->replyTo(), $Email->replyTo());
     $this->assertEquals($emailReconstructed->readReceipt(), $Email->readReceipt());
     $this->assertEquals($emailReconstructed->returnPath(), $Email->returnPath());
     $this->assertEquals($emailReconstructed->messageId(), $Email->messageId());
     $this->assertEquals($emailReconstructed->domain(), $Email->domain());
     $this->assertEquals($emailReconstructed->theme(), $Email->theme());
     $this->assertEquals($emailReconstructed->profile(), $Email->profile());
     $this->assertEquals($emailReconstructed->viewVars(), $Email->viewVars());
     $this->assertEquals($emailReconstructed->template(), $Email->template());
     //for now cannot be done 'data' is base64_encode on set but not decoded when get from $email
     //$this->assertEquals($emailReconstructed->attachments(),$Email->attachments());
     //$this->assertEquals($Email, $output['settings']);
 }
 /**
  * @param mixed $data Job data
  * @param int|null $id The id of the QueuedTask
  * @return bool Success
  */
 public function run(array $data, $id)
 {
     if (!isset($data['settings'])) {
         $this->err('Queue Email task called without settings data.');
         return false;
     }
     /* @var \Cake\Mailer\Email $email */
     $email = $data['settings'];
     if (is_object($email) && $email instanceof Email) {
         try {
             $transportClassNames = $email->configuredTransport();
             $result = $email->transport($transportClassNames[0])->send();
             if (!isset($config['log']) || !empty($config['logTrace']) && $config['logTrace'] === true) {
                 $config['log'] = 'email_trace';
             } elseif (!empty($config['logTrace'])) {
                 $config['log'] = $config['logTrace'];
             }
             if (isset($config['logTrace']) && !$config['logTrace']) {
                 $config['log'] = false;
             }
             if (!empty($config['logTrace'])) {
                 $this->_log($result, $config['log']);
             }
             return (bool) $result;
         } catch (Exception $e) {
             $error = $e->getMessage();
             $error .= ' (line ' . $e->getLine() . ' in ' . $e->getFile() . ')' . PHP_EOL . $e->getTraceAsString();
             Log::write('email_error', $error);
             return false;
         }
     }
     $class = 'Tools\\Mailer\\Email';
     if (!class_exists($class)) {
         $class = 'Cake\\Mailer\\Email';
     }
     $this->Email = new $class();
     $settings = array_merge($this->defaults, $data['settings']);
     foreach ($settings as $method => $setting) {
         call_user_func_array([$this->Email, $method], (array) $setting);
     }
     $message = null;
     if (!empty($data['vars'])) {
         if (isset($data['vars']['content'])) {
             $message = $data['vars']['content'];
         }
         $this->Email->viewVars($data['vars']);
     }
     return (bool) $this->Email->send($message);
 }
示例#4
0
 /**
  * Send an activation link to user email
  * @param $user
  */
 public function _sendActivationEmail(Entity $user, $url = '/register/active/')
 {
     $ActivationKeys = TableRegistry::get('Users.ActivationKeys');
     $activationKeyEntity = $ActivationKeys->newEntity();
     $activationKeyEntity->user_id = $user->id;
     do {
         $activationKeyEntity->activation_key = Text::uuid();
     } while (!$ActivationKeys->save($activationKeyEntity));
     //send email with activation key
     $activationUrl = Router::url($url . $activationKeyEntity->activation_key, true);
     $email = new Email('default');
     //        $email->transport();
     $email->emailFormat('html');
     $email->viewVars(compact('activationUrl'));
     $email->helpers(['Html']);
     $email->to($user->username);
     return $email;
 }
示例#5
0
 public function sendNewMissionsToInterestedUsers($nbrDays = 7)
 {
     $created = Time::now()->subDays($nbrDays);
     $missions = $this->Missions->find('all', ['conditions' => ['Missions.created >=' => $created]])->toArray();
     $newMissions = [];
     foreach ($missions as $mission) {
         $users = $this->Users->find('all')->toArray();
         foreach ($users as $user) {
             $usersTypeMissions = $this->UsersTypeMissions->findByUserId($user['id'])->toArray();
             foreach ($usersTypeMissions as $userTypeMissions) {
                 // Check if the current mission has the same type has the current userType mission
                 if ($userTypeMissions['type_mission_id'] == $mission['type_mission_id']) {
                     // Add a new mission to the list of missions to send
                     if (isset($newMissions[$user['email']])) {
                         $newMission = [];
                         $newMission['link'] = Router::url(['controller' => 'Missions', 'action' => 'view', $mission['id']]);
                         $newMission['name'] = $mission['name'];
                         //print("Mission " . $newMission['name'] . " added to user " . $user['email'] . "\n");
                         array_push($newMissions[$user['email']], $newMission);
                     } else {
                         //print("Creating mission list for user " . $user['email'] . "\n");
                         $newMissions[$user['email']] = [];
                         $newMission = [];
                         $newMission['link'] = Router::url(['controller' => 'Missions', 'action' => 'view', $mission['id']]);
                         $newMission['name'] = $mission['name'];
                         //print("Mission " . $newMission['name'] . " added to user " . $user['email'] . "\n");
                         array_push($newMissions[$user['email']], $newMission);
                     }
                 }
             }
         }
     }
     // For each user send their associated list of missions
     foreach ($newMissions as $userEmail => $missionsToSend) {
         $email = new Email();
         $email->domain('maisonlogiciellibre.org');
         $email->to($userEmail);
         $email->subject('New missions available at ML2');
         $email->template('new_missions');
         $email->emailFormat('both');
         $email->viewVars(['missions' => $missionsToSend]);
         $email->send();
     }
 }
 /**
  * Send mail
  *
  * @param \Cake\Mailer\Email $email Email
  * @return array
  */
 public function send(Email $email)
 {
     if (!empty($this->_config['queue'])) {
         $this->_config = $this->_config['queue'] + $this->_config;
         $email->config((array) $this->_config['queue'] + ['queue' => []]);
         unset($this->_config['queue']);
     }
     $settings = ['from' => [$email->from()], 'to' => [$email->to()], 'cc' => [$email->cc()], 'bcc' => [$email->bcc()], 'charset' => [$email->charset()], 'replyTo' => [$email->replyTo()], 'readReceipt' => [$email->readReceipt()], 'returnPath' => [$email->returnPath()], 'messageId' => [$email->messageId()], 'domain' => [$email->domain()], 'getHeaders' => [$email->getHeaders()], 'headerCharset' => [$email->headerCharset()], 'theme' => [$email->theme()], 'profile' => [$email->profile()], 'emailFormat' => [$email->emailFormat()], 'subject' => [$email->getOriginalSubject()], 'transport' => [$this->_config['transport']], 'attachments' => [$email->attachments()], 'template' => $email->template(), 'viewVars' => [$email->viewVars()]];
     foreach ($settings as $setting => $value) {
         if (array_key_exists(0, $value) && ($value[0] === null || $value[0] === [])) {
             unset($settings[$setting]);
         }
     }
     $QueuedTasks = TableRegistry::get('Queue.QueuedTasks');
     $result = $QueuedTasks->createJob('Email', ['settings' => $settings]);
     $result['headers'] = '';
     $result['message'] = '';
     return $result;
 }
 /**
  * Send notification
  *
  * @param \CvoTechnologies\Notifier\Notification $notification Notification instance.
  * @return array
  */
 public function send(Notification $notification)
 {
     $email = new Email();
     $email->profile($this->config('profile'));
     $email->to($notification->to(null, static::TYPE));
     $email->subject($notification->title());
     $email->viewBuilder()->templatePath($notification->viewBuilder()->templatePath());
     $email->viewBuilder()->template($notification->viewBuilder()->template());
     $email->viewBuilder()->plugin($notification->viewBuilder()->plugin());
     $email->viewBuilder()->theme($notification->viewBuilder()->theme());
     $email->viewBuilder()->layout($notification->viewBuilder()->layout());
     $email->viewBuilder()->autoLayout($notification->viewBuilder()->autoLayout());
     $email->viewBuilder()->layoutPath($notification->viewBuilder()->layoutPath());
     $email->viewBuilder()->name($notification->viewBuilder()->name());
     $email->viewBuilder()->className($notification->viewBuilder()->className());
     $email->viewBuilder()->options($notification->viewBuilder()->options());
     $email->viewBuilder()->helpers($notification->viewBuilder()->helpers());
     $email->viewVars($notification->viewVars());
     return $email->send();
 }
示例#8
0
 /**
  * Sets email view vars.
  *
  * @param string|array $key Variable name or hash of view variables.
  * @param mixed $value View variable value.
  * @return $this object.
  */
 public function set($key, $value = null)
 {
     $this->_email->viewVars(is_string($key) ? [$key => $value] : $key);
     return $this;
 }
示例#9
0
 /**
  * Sends an email with a link that can be used in the next
  * 24 hours to give the user access to /users/resetPassword
  *
  * @param int $userId User ID
  * @return array
  */
 public function sendPasswordResetEmail($userId)
 {
     $timestamp = time();
     $usersTable = TableRegistry::get('Users');
     $hash = $usersTable->getPasswordResetHash($userId, $timestamp);
     $resetUrl = Router::url(['prefix' => false, 'controller' => 'Users', 'action' => 'resetPassword', $userId, $timestamp, $hash], true);
     $email = new Email('reset_password');
     $user = $usersTable->get($userId);
     $email->to($user->email);
     $email->viewVars(compact('user', 'resetUrl'));
     return $email->send();
 }
示例#10
0
 /**
  * Register method
  *
  * @return void Redirects on successful add, renders view otherwise.
  *                     */
 public function register()
 {
     $this->viewBuilder()->layout('registerv2');
     $user = $this->Users->newEntity();
     if ($this->request->is('post')) {
         if ($this->Recaptcha->verify()) {
             $user = $this->Users->patchEntity($user, $this->request->data);
             $user->email_validation_code = rand(10000, 99999);
             $user->role = 'student';
             if ($this->Users->save($user)) {
                 $email = new Email();
                 $email->template('confirmation')->emailFormat('text')->to($user->email)->from('*****@*****.**');
                 $validate_url = "http://www.egresadositt.com/users/validateEmail/{$user->id}/{$user->email_validation_code}";
                 $email->viewVars(['first_name' => $user->first_name, 'email_validation_code' => $validate_url, 'user_name' => $user->username]);
                 $email->send();
                 $this->Flash->success(__('The user has been saved.'));
                 return $this->redirect(['controller' => 'Pages', 'action' => 'success']);
             } else {
                 $this->Flash->error(__('The user could not be saved. Please, try again.'));
             }
         } else {
             $this->Flash->error(__('Please check your Recaptcha Box.'));
         }
     }
     $generations = $this->Users->Generations->find('list', ['limit' => 200]);
     $careers = $this->Users->Careers->find('list', ['limit' => 200]);
     $questions = $this->Users->Questions->find('list', ['limit' => 200]);
     $this->set(compact('user', 'generations', 'careers', 'questions'));
     $this->set('_serialize', ['user']);
 }
示例#11
0
 /**
  * Allow a user to request a password reset.
  * @return
  */
 function forgot()
 {
     header('Content-Type: application/json');
     header('Access-Control-Allow-Origin: *');
     $userInfo = TableRegistry::get('Users');
     $userDetails = TableRegistry::get('UserDetails');
     //print_r($_REQUEST);die();
     if ($this->request->query) {
         $user_email = $_REQUEST['email'];
         if (!empty($user_email)) {
             $users = $userInfo->find('all', ['conditions' => ['Users.email' => $user_email]]);
             $user = $users->first();
             $user_details = $userDetails->find('all', ['conditions' => ['UserDetails.user_id' => $user->id]]);
             $userInfo = $user_details->first();
             //echo $user->email;die;
             if (!$user) {
                 $mesg['msg'] = 'Sorry, the username entered was not found.';
                 $mesg['response_code'] = '0';
                 echo json_encode($mesg);
                 die;
             } else {
                 //Time::$defaultLocale = 'es-ES';
                 $link = BASE_SERVER_URL . 'logins/forgotpassform';
                 $time = Time::now('Asia/Kolkata');
                 $time_new = $time->i18nFormat('yyyy-MM-dd HH:mm:ss');
                 $token = $user->id . "+" . $user->email . "+" . $time_new;
                 $token_new = base64_encode($token);
                 //$email = new Email('mailjet');
                 $email = new Email();
                 $email->transport('mailjet');
                 $email->viewVars(['last_name' => $userInfo->lastname]);
                 $email->viewVars(['PASSWORD_RESET_LINK' => FORGOT_PAGE_LINK]);
                 $email->from(['*****@*****.**' => 'My Site'])->template('forgot', 'htmlemail')->emailFormat('html')->to($user->email)->subject('Forgot Password')->send();
                 if ($email) {
                     $mesg['msg'] = 'Mail send to your mail. Please check inbox.';
                     $mesg['response_code'] = '1';
                     echo json_encode($mesg);
                     die;
                 }
             }
         }
     }
 }
示例#12
0
 /**
  * Add method
  *
  * @return \Cake\Network\Response|void Redirects on successful add, renders view otherwise.
  */
 public function register()
 {
     header('Content-Type: application/json');
     header('Access-Control-Allow-Origin: *');
     $email = @$_REQUEST['email'];
     $password = @$_REQUEST['password'];
     $fname = @$_REQUEST['fname'];
     $lname = @$_REQUEST['lname'];
     $blockno = @$_REQUEST['blockno'];
     $unitno = @$_REQUEST['unitno'];
     $street = @$_REQUEST['street'];
     $country = 'Singapore';
     $postalcode = @$_REQUEST['postalcode'];
     $telephoneno = @$_REQUEST['telephoneno'];
     $fax_no = @$_REQUEST['fax_no'];
     $compname = @$_REQUEST['compname'];
     $position = @$_REQUEST['position'];
     $search = $email;
     if (empty($email)) {
         //EMPTY CHECK
         $mesg['msg'] = 'The email is empty11. Please, try again.';
         $mesg['response_code'] = '0';
         echo json_encode($mesg);
         die;
     }
     if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
         //INVALID EMAIL CHECK.
         $mesg['msg'] = 'The email is not a valid email. Please, try again.';
         $mesg['response_code'] = '0';
         echo json_encode($mesg);
         die;
     }
     if (!preg_match('/^[a-z0-9A-Z]*$/', $password)) {
         $mesg['msg'] = 'The password that you have given is not valid.It should be alphanumeric.Please try again.';
         $mesg['response_code'] = '0';
         echo json_encode($mesg);
         die;
     }
     if (strlen($password) < 6) {
         $mesg['msg'] = 'Minimum 6 characters required for password.';
         $mesg['response_code'] = '0';
         echo json_encode($mesg);
         die;
     }
     if (!ctype_digit($telephoneno)) {
         $mesg['msg'] = 'Given telephone number is not a numeric.';
         $mesg['response_code'] = '0';
         echo json_encode($mesg);
         die;
     }
     if (strlen($telephoneno) > 20) {
         $mesg['msg'] = 'Maximum 20 characters can be used for telephone no.';
         $mesg['response_code'] = '0';
         echo json_encode($mesg);
         die;
     }
     if (!empty($fax_no)) {
         if (!ctype_digit($fax_no)) {
             $mesg['msg'] = 'Given fax number is not a numeric.';
             $mesg['response_code'] = '0';
             echo json_encode($mesg);
             die;
         }
         if (strlen($fax_no) > 20) {
             $mesg['msg'] = 'Maximum 20 characters can be used for fax no.';
             $mesg['response_code'] = '0';
             echo json_encode($mesg);
             die;
         }
     }
     $user = $this->Users->newEntity();
     $getArray = array('email' => $email, 'password' => $password, 'status' => '1');
     $user = $this->Users->patchEntity($user, $getArray);
     $query = $this->Users->find('all', ['conditions' => ['Users.email LIKE ' => '%' . $search . '%'], 'limit' => 1])->all();
     $counts = $query->count();
     if ($counts == '1') {
         //DUPLICATE MAIL CHECK
         $mesg['msg'] = 'The email already in use. Please, try again.';
         $mesg['response_code'] = '0';
         echo json_encode($mesg);
         die;
     }
     if ($this->Users->save($user)) {
         //print_r($user->id);
         $userAddress = TableRegistry::get('UserAddresses');
         $UserDetails = TableRegistry::get('UserDetails');
         $user_address = $userAddress->newEntity();
         $user_address->user_id = $user->id;
         $user_address->street_address = $street;
         //$user_address->country = $country;
         $user_address->country = 'Singapore';
         $user_address->postalcode = $postalcode;
         $user_address->telephone = $telephoneno;
         $user_address->fax_no = $fax_no;
         if ($userAddress->save($user_address)) {
             $userAddress_lastid = $user_address->id;
         }
         $User_details = $UserDetails->newEntity();
         $User_details->user_id = $user->id;
         $User_details->firstname = $fname;
         $User_details->lastname = $lname;
         $User_details->blockno = $blockno;
         $User_details->unitno = $unitno;
         $User_details->company = $compname;
         $User_details->position = $position;
         if ($UserDetails->save($User_details)) {
             //$User_details_lastid = $UserDetails->getLastInsertID();
         }
         //SEND EMAIL...............................
         //http://book.cakephp.org/3.0/en/core-libraries/email.html
         $emailer = new Email();
         $emailer->transport('mailjet');
         $emailer->viewVars(['last_name' => $lname]);
         //$emailto='*****@*****.**';
         $emailto = $email;
         try {
             $res = $emailer->from(['*****@*****.**'])->template('welcome', 'fancy')->emailFormat('html')->to([$emailto => 'BLS-New User'])->subject('Membership activation')->send('test-email...');
         } catch (Exception $e) {
             echo 'Exception : ', $e->getMessage(), "\n";
         }
         //----------------------------------------
         $mesg['msg'] = 'The user has been saved.';
         $mesg['response_code'] = '1';
     } else {
         $mesg['msg'] = 'The user could not be saved. Please, try again.';
         $mesg['response_code'] = '0';
     }
     echo json_encode($mesg);
     die;
 }
 /**
  * Send emails
  *
  * @param string $template
  * @param array $data
  * @param string $config
  * @throws SocketException if mail could not be sent
  */
 public function send($data = [], $template = 'default', $config = 'default')
 {
     // initialize class
     $email = new Email($config);
     // to?
     if (isset($data['to'])) {
         $email->to($data['to']);
     }
     // brand
     $from = $email->from();
     $brand = reset($from);
     // subject?
     $subject = isset($data['subject']) ? $data['subject'] : $email->subject();
     $email->subject(trim($config == 'debug' ? $brand . ' report: ' . $subject : $subject . ' - ' . $brand));
     // template?
     $email->template($template);
     // data & send
     $email->viewVars(['subject' => $subject, 'form' => isset($data['form']) ? $data['form'] : [], 'brand' => $brand, 'info' => ['ip' => $this->request->clientIP(), 'useragent' => env('HTTP_USER_AGENT'), 'date' => strftime('%d.%m.%Y %H:%M')]])->send();
 }