//unbedingt ^^^ pruefen auf gueltige email! //sonst findet getAdr alle adressen!!! da search - email null ist / leer ist //adr anhand email suchen! $search['email'] = $email; $search['email_exact_match'] = true; $ADR = $ADDRESS->getAdr(0, 0, 1, 0, $search); //print_r($ADR); if (count($ADR) > 0) { //noch nicht abgemeldet? if ($ADR[0]['status'] != 11) { /* if ($ADR[0]['code']==$code) { */ if (checkid($h_id)) { $QUEUE = new tm_Q(); $QUEUE->setHStatus($h_id, 7); //unsubscribe! } $created = date("Y-m-d H:i:s"); //im memo speichern wir den namen des newsletter etc. $memo = "unsubscribed"; $NEWSLETTER = new tm_NL(); $NL = $NEWSLETTER->getNL($nl_id); if (count($NL) > 0) { $memo .= " (" . $NL[0]['subject'] . ")"; } //set status adresse, set editor... $author = "unsubscribe"; //always unsubscribe ... if ($ADDRESS->unsubscribe($ADR[0]['id'], $author)) { $ADDRESS->setAktiv($ADR[0]['id'], 0);
//nl view counter ++ $NEWSLETTER->addView($nl_id); //history id? dann in der historie auf view setzen! if (checkid($h_id)) { $QUEUE = new tm_Q(); //nur der erste aufruf wird mit der ip versehen! ansonsten wuerde diese jedesmal ueberschrieben wenn der leser oder ein anderer das nl anschaut. $H = $QUEUE->getH($h_id); if (isset($H[0])) { //https://sourceforge.net/tracker/?func=detail&aid=3114571&group_id=190396&atid=933192 if (empty($H[0]['ip']) || $H[0]['ip'] == '0.0.0.0') { $QUEUE->setHIP($H[0]['id'], getIP()); //save ip } if ($H[0]['status'] != 7) { //7:unsubscribed $QUEUE->setHStatus($h_id, 3); //view } } //isset H[0] } //checkid h_id //adressid? wenn ja status aendern und view zaehlen if (checkid($a_id)) { $ADDRESS = new tm_ADR(); $ADR = $ADDRESS->getAdr($a_id); if (isset($ADR[0])) { //https://sourceforge.net/tracker/?func=detail&aid=3114571&group_id=190396&atid=933192 //only set view status if not waiting status or unsubscribed // !5 && !11 if ($ADR[0]['status'] != 5 && $ADR[0]['status'] != 11) { $ADDRESS->setStatus($a_id, 4);
send_log("HID: " . $H[$bcc]['id']); send_log("adr_id: " . $H[$bcc]['adr_id']); send_log("h_status: " . $H[$bcc]['status'] . "==1"); if ($hc_wait > 0) { //ok $send_it = true; //wird gebraucht um versenden abzufangen wenn aktuell bearbeiteter eintrag send_log("OK: HID: " . $H[$bcc]['id']); //vor der pruefung auf valide email status schon auf 5 setzen, //ist ggf doppelt gemobbelt, kann aber ggf. unter bestimmten Umstaenden dazu fuehren // das eine validierung auf gueltigen mx etwas laenger dauert, //der job mit einem anderen konkurriert und waehrend die //pruefung und mx abfrage laeuft der konkurrierende job sich die adresse krallt, man weiss nix genaues nich ;) //h eintrag wird zum bearbeiten gesperrt, status 5! send_log("setHStatus 5"); $QUEUE->setHStatus($H[$bcc]['id'], 5); send_log("adr_id: " . $H[$bcc]['adr_id']); //adresse holen send_log("getAdr()"); $ADR = $ADDRESS->getAdr($H[$bcc]['adr_id']); //nur senden wenn korrekte emailadr! und fehlerrate < max errors //erstmal ok, kein fehler //fehler beim senden? adresse ok? $a_error = false; $h_error = false; $a_status = $ADR[0]['status']; ////todo optimierung: check errors vor blacklist und vor mx, spart ggf zeit und abfragen von adressen die eh zu viele fehler haben oder geblacklisted wurden! //BLACKLIST prüfen if ($Q[$qcc]['check_blacklist']) { send_log("checking blacklist"); if ($BLACKLIST->isBlacklisted($ADR[0]['email'])) {