Example #1
0
 $rpdrefid = '';
 if (isset($mail->msgscore->item)) {
     foreach ($mail->msgscore->item as $score) {
         if ($score->first == 3) {
             list($rpdscore, $rpdrefid) = explode('|', $score->second);
         }
     }
 }
 $q2 = $dbh->prepare('UPDATE release_sender SET found=1,msgfrom=:msgfrom,msgsubject=:msgsubject,msgrpdscore=:msgrpdscore,msgrpdrefid=:msgrpdrefid WHERE id = :id;');
 $q2->execute([':id' => $row['id'], ':msgfrom' => $mail->msgfrom, ':msgsubject' => $mail->msgsubject, ':msgrpdscore' => $rpdscore, ':msgrpdrefid' => $rpdrefid]);
 foreach ($items->result->item as $mail) {
     sleep(3);
     // Move to long-term quarantine
     try {
         $client = new SoapClient('https://' . $host . '/remote/?wsdl', ['features' => SOAP_SINGLE_ELEMENT_ARRAYS, 'location' => 'https://' . $host . '/remote/', 'uri' => 'urn:halon', 'login' => $soap_user, 'password' => $soap_pass]);
         $items = $client->mailQueueUpdateBulk(array('filter' => 'messageid=' . $id . ' quarantine=' . $quarantine_short, 'fields' => [["first" => "quarantine", "second" => $quarantine_long]]));
     } catch (Exception $e) {
         echo $e->getMessage();
         continue;
     }
     $token = bin2hex(openssl_random_pseudo_bytes(12));
     $q2 = $dbh->prepare('INSERT INTO release_rcpt (release_id,queueid,msgto,token) VALUES (:id,:queueid,:msgto,:token);');
     $q2->execute([':id' => $row['id'], ':queueid' => $mail->id, ':msgto' => $mail->msgto, ':token' => $token]);
     $insertid = $dbh->lastInsertId();
     if ($dbh->getAttribute(PDO::ATTR_DRIVER_NAME) == 'pgsql') {
         // XXX PDO lastInsertId() doesnt work for PostgreSQL
         $q2 = $dbh->prepare('SELECT id FROM release_rcpt WHERE release_id = :id AND queueid = :queueid AND token = :token;');
         $q2->execute([':id' => $row['id'], ':queueid' => $mail->id, ':token' => $token]);
         $row2 = $q2->fetch(PDO::FETCH_ASSOC);
         $insertid = $row2['id'];
     }