public function updateCustomRecord($parameters) { $account = ['name_013' => $this->request->input('name'), 'email_013' => $this->request->input('email'), 'reply_to_013' => empty($this->request->input('replyTo')) ? null : $this->request->input('replyTo'), 'outgoing_server_013' => $this->request->input('outgoingServer'), 'outgoing_user_013' => $this->request->input('outgoingUser'), 'outgoing_secure_013' => $this->request->input('outgoingSecure'), 'outgoing_port_013' => $this->request->input('outgoingPort'), 'incoming_type_013' => $this->request->input('incomingType'), 'incoming_server_013' => $this->request->input('incomingServer'), 'incoming_user_013' => $this->request->input('incomingUser'), 'incoming_secure_013' => $this->request->input('incomingSecure'), 'incoming_port_013' => $this->request->input('incomingPort')]; // Get object to read password to check account if ($parameters['specialRules']['outgoingPassRule'] || $parameters['specialRules']['incomingPassRule']) { $oldAccount = EmailAccount::find($this->request->input('id')); } if (!$parameters['specialRules']['outgoingPassRule']) { $account['outgoing_pass_013'] = Crypt::encrypt($this->request->input('outgoingPass')); } else { $account['outgoing_pass_013'] = $oldAccount->outgoing_pass_013; } if (!$parameters['specialRules']['incomingPassRule']) { $account['incoming_pass_013'] = Crypt::encrypt($this->request->input('incomingPass')); } else { $account['incoming_pass_013'] = $oldAccount->incoming_pass_013; } $response = EmailServices::testEmailAccount($account); if ($response === true) { EmailAccount::where('id_013', $this->request->input('id'))->update($account); } else { return redirect()->route('edit' . ucfirst($this->routeSuffix), $parameters['urlParameters'])->withErrors($response)->withInput(); } }
/** * Recursive function * * @param \Syscover\Pulsar\Libraries\ImapServices $imapService * @param \Syscover\Pulsar\Models\EmailAccount $account * @param \Illuminate\Support\Collection $patterns * @param integer $position */ public static function checkBouncedMessagesFromAccount($imapService, $account, $patterns, $position) { $nEmailsToChecck = 25; // Solicitamos los 10 anteriores mensajes a comprobar desde la última posición comnprobada $messages = $imapService->getServer()->getMessages($nEmailsToChecck, $position); $findLastCheckUid = false; foreach ($messages as $key => $message) { // comprobamos si el mensaje coincide con algún patron $response = ComunikLibrary::checkEmailPattern($message, $patterns); if ($response['success']) { if (count($response['contacts']) > 0) { // Obtenemos el primer contacto del email que ha coincidido con el patrón $contact = $response['contacts']->first(); } else { $contact = false; } // Acciones a realizar // 1 = nada // 2 = borrar contacto y mensaje // 3 = unsuscribe y borrar mensaje // 4 = borrar contacto // 5 = ususcribe contacto // 6 = borrar mensaje if ($contact != false && ($response['pattern']->action_049 == 2 || $response['pattern']->action_049 == 4)) { // borrar contacto Contact::where('id_041', $contact->id_041)->delete(); } if ($contact != false && ($response['pattern']->action_049 == 3 || $response['pattern']->action_049 == 5)) { // unsuscribe contacto Contact::where('id_041', $contact->id_041)->update(['unsubscribe_email_041' => true]); } if ($response['pattern']->action_049 == 2 || $response['pattern']->action_049 == 3 || $response['pattern']->action_049 == 6) { // borrar mensaje $message->delete(); // retrasamos medio segundo la ejecución para no saturar el servidor IMAP de peticiones usleep(500000); } } // si es la última interacción if ($key === count($messages) - 1) { // purge all delete messages $imapService->getServer()->expunge(); // actualizamos el último UID comprobado EmailAccount::where('id_013', $account->id_013)->update(['last_check_uid_013' => $message->getUid()]); } } }