// Mail host pop|imap server ; default 'localhost' $cwsMailBounceHandler->username = $bounce_user; // Mailbox username $cwsMailBounceHandler->password = $bounce_pass; // Mailbox password $cwsMailBounceHandler->port = $bounce_port; // the port to access your mailbox ; default 143, other common choices are 110 (pop3), 995 (gmail) $cwsMailBounceHandler->service = $bounce_service; // the service to use (imap or pop3) ; default 'imap' $cwsMailBounceHandler->service_option = $bounce_option; // the service options (none, tls, notls, ssl) ; default 'notls' break; } $cwsMailBounceHandler->cert = CWSMBH_CERT_NOVALIDATE; // certificates validation (CWSMBH_CERT_VALIDATE or CWSMBH_CERT_NOVALIDATE) if service_option is 'tls' or 'ssl' ; if ($cwsMailBounceHandler->openImapRemote()) { $result = $cwsMailBounceHandler->processMails(); } echo 'Nombre de mails : ' . $result['counter']['total'] . '<br> Nombre de traitements : ' . $result['counter']['fetched'] . '<br> Emails traités en erreur : ' . $result['counter']['processed'] . '<br> Emails traités corrects : ' . $result['counter']['unprocessed'] . '<br> Emails supprimés : ' . $result['counter']['deleted'] . '<br> Emails déplacés : ' . $result['counter']['moved']; if (count($result) > 0) { foreach ($result['msgs'] as $item) { $expl = $cwsMailBounceHandler->findStatusExplanationsByCode($item['recipients'][0]['status']); if ($item['processed'] && $item['recipients'][0]['action'] == 'failed' && $type_env == 'prod') { UpdateEmailError($cnx, $row_config_globale['table_email'], $list_id, $item['recipients'][0]['email'], $item['recipients'][0]['status'], $item['recipients'][0]['bounce_type'], $item['recipients'][0]['bounce_cat'], $expl['third_subcode']['title'], $expl['third_subcode']['desc']); UpdateEmailSendError($cnx, $row_config_globale['table_send'], $list_id); }
function init() { parent::init(); ini_set('memory_limit', '2048M'); set_time_limit(0); $cwsMailBounceHandler = new CwsMailBounceHandler(); $cwsMailBounceHandler->test_mode = false; // default false // $cwsMailBounceHandler->debug_verbose = CWSMBH_VERBOSE_DEBUG; // default CWSMBH_VERBOSE_QUIET $cwsMailBounceHandler->purge = true; // default false //$cwsMailBounceHandler->disable_delete = false; // default false //$cwsMailBounceHandler->open_mode = CWSMBH_OPEN_MODE_IMAP; // default CWSMBH_OPEN_MODE_IMAP //$cwsMailBounceHandler->move_soft = false; // default false //$cwsMailBounceHandler->folder_soft = 'INBOX.soft'; // default 'INBOX.hard' - NOTE: for open_mode IMAP it must start with 'INBOX.' //$cwsMailBounceHandler->move_hard = false; // default false //$cwsMailBounceHandler->folder_hard = 'INBOX.hard'; // default 'INBOX.soft' - NOTE: for open_mode IMAP it must start with 'INBOX.' /** * .eml folder */ //$cwsMailBounceHandler->open_mode = CWSMBH_OPEN_MODE_FILE; //if ($cwsMailBounceHandler->openFolder('emls/')) { //$cwsMailBounceHandler->processMails(); //} /** * .eml file */ //$cwsMailBounceHandler->open_mode = CWSMBH_OPEN_MODE_FILE; //if ($cwsMailBounceHandler->openFile('test/01.eml')) { // $cwsMailBounceHandler->processMails(); //} /** * Local mailbox */ //$cwsMailBounceHandler->open_mode = CWSMBH_OPEN_MODE_IMAP; //if ($cwsMailBounceHandler->openImapLocal('/home/email/temp/mailbox')) { // $cwsMailBounceHandler->processMails(); //} /** * Remote mailbox */ $mail_box_checked = []; $emails_setting = $this->add('xepan\\communication\\Model_Communication_EmailSetting'); $emails_setting->addCondition('is_active', true); $invalid_email = []; foreach ($emails_setting as $setting) { if (in_array($setting['bounce_imap_email_host'], $mail_box_checked)) { continue; } $mail_box_checked[] = $setting['bounce_imap_email_host']; // echo "string".$setting['name']; $cwsMailBounceHandler->open_mode = CWSMBH_OPEN_MODE_IMAP; $cwsMailBounceHandler->host = $setting['bounce_imap_email_host']; // Mail host server ; default 'localhost' $cwsMailBounceHandler->username = $setting['return_path']; // Mailbox username $cwsMailBounceHandler->password = $setting['bounce_imap_email_password']; // Mailbox password $cwsMailBounceHandler->port = $setting['bounce_imap_email_port']; // the port to access your mailbox ; default 143, other common choices are 110 (pop3), 995 (gmail) //$cwsMailBounceHandler->service = 'imap'; // the service to use (imap or pop3) ; default 'imap' $cwsMailBounceHandler->service_option = 'ssl'; // the service options (none, tls, notls, ssl) ; default 'notls' //$cwsMailBounceHandler->cert = CWSMBH_CERT_NOVALIDATE; // certificates validation (CWSMBH_CERT_VALIDATE or CWSMBH_CERT_NOVALIDATE) if service_option is 'tls' or 'ssl' ; default CWSMBH_CERT_NOVALIDATE //$cwsMailBounceHandler->boxname = 'TEST'; // the mailbox to access ; default 'INBOX' // $cwsMailBounceHandler->imap_opt = $this->api->current_website['bounce_imap_flags']; if ($cwsMailBounceHandler->openImapRemote()) { $cwsMailBounceHandler->processMails(); } // echo "<pre>"; // print_r($cwsMailBounceHandler->result); // echo "</pre>"; $result = $cwsMailBounceHandler->result; if ($result['counter']['processed']) { foreach ($result['msgs'] as $msg) { if ($msg['type'] == 'bounce') { foreach ($msg['recipients'] as $receipent) { if ($receipent['remove']) { if (!in_array($receipent['email'], $invalid_email)) { $invalid_email[] = $receipent['email']; } } } } } } } if (count($invalid_email)) { $this->markInValid($invalid_email); } }