/** * 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); }
/** * 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; }
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(); }
/** * 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; }
/** * 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(); }
/** * 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']); }
/** * 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; } } } } }
/** * 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(); }