Guest User

ARF/Bounce Processor

a guest
Oct 5th, 2011
340
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.10 KB | None | 0 0
  1. <?php
  2. $notifyemail = "[email protected]";
  3.  
  4. $fd = fopen("php://stdin", "r");
  5. $email = "";
  6. while (!feof($fd)) {
  7.     $email .= fread($fd, 1024);
  8. }
  9. fclose($fd);
  10.  
  11. $lines = explode("\n", $email);
  12. $type = "";
  13. $CampaignID = "";
  14.    
  15. foreach ($lines as $line) {
  16.     $line = trim($line);
  17.     if ($type == "ARF") {
  18.         if (strstr("X-CampaignID:")) {
  19.             $begin = strrpos($line, ":");
  20.             $CampaignID = substr($line, $begin + 1);
  21.             exit;  
  22.         }
  23.     }else if ($type == "BOUNCE") {
  24.         if ($CampaignID == "") {
  25.             if (strstr("X-CampaignID:")) {
  26.                 $begin = strrpos($line, ":");
  27.                 $CampaignID = substr($line, $begin + 1);
  28.             }  
  29.         }
  30.        
  31.         $bouncecodes = array(
  32.             '5.0.0' => 'HARDBOUNCE',
  33.             '5.1.0' => 'HARDBOUNCE',
  34.             '5.1.1' => 'HARDBOUNCE',
  35.             '5.1.2' => 'HARDBOUNCE',
  36.             '5.1.3' => 'HARDBOUNCE',
  37.             '5.1.4' => 'HARDBOUNCE',
  38.             '5.1.5' => 'HARDBOUNCE',
  39.             '5.1.6' => 'HARDBOUNCE',
  40.             '5.1.7' => 'HARDBOUNCE',
  41.             '5.1.8' => 'HARDBOUNCE',
  42.             '5.2.0' => 'SOFTBOUNCE',
  43.             '5.2.1' => 'SOFTBOUNCE',
  44.             '5.2.2' => 'SOFTBOUNCE',
  45.             '5.2.3' => 'HARDBOUNCE',
  46.             '5.2.4' => 'HARDBOUNCE',
  47.             '5.3.0' => 'HARDBOUNCE',
  48.             '5.3.1' => 'SOFTBOUNCE',
  49.             '5.3.2' => 'HARDBOUNCE',
  50.             '5.3.3' => 'HARDBOUNCE',
  51.             '5.3.4' => 'HARDBOUNCE',
  52.             '5.4.0' => 'HARDBOUNCE',
  53.             '5.4.1' => 'HARDBOUNCE',
  54.             '5.4.2' => 'HARDBOUNCE',
  55.             '5.4.3' => 'HARDBOUNCE',
  56.             '5.4.4' => 'HARDBOUNCE',
  57.             '5.4.5' => 'SOFTBOUNCE',
  58.             '5.4.6' => 'HARDBOUNCE',
  59.             '5.4.7' => 'HARDBOUNCE',
  60.             '5.5.0' => 'HARDBOUNCE',
  61.             '5.5.1' => 'HARDBOUNCE',
  62.             '5.5.2' => 'HARDBOUNCE',
  63.             '5.5.3' => 'SOFTBOUNCE',
  64.             '5.5.4' => 'HARDBOUNCE',
  65.             '5.5.5' => 'HARDBOUNCE',
  66.             '5.6.0' => 'HARDBOUNCE',
  67.             '5.6.1' => 'HARDBOUNCE',
  68.             '5.6.2' => 'HARDBOUNCE',
  69.             '5.6.3' => 'HARDBOUNCE',
  70.             '5.6.4' => 'HARDBOUNCE',
  71.             '5.6.5' => 'HARDBOUNCE',
  72.             '5.7.0' => 'HARDBOUNCE',
  73.             '5.7.1' => 'HARDBOUNCE',
  74.             '5.7.2' => 'HARDBOUNCE',
  75.             '5.7.3' => 'HARDBOUNCE',
  76.             '5.7.4' => 'HARDBOUNCE',
  77.             '5.7.5' => 'HARDBOUNCE',
  78.             '5.7.6' => 'HARDBOUNCE',
  79.             '5.7.7' => 'HARDBOUNCE',
  80.             '9.1.1' => 'HARDBOUNCE',
  81.         );
  82.        
  83.         foreach ($bouncecodes as $code => $btype) {
  84.             if (strstr($code)) {
  85.                 $type = $btype;
  86.                 if ($CampaignID != "") {
  87.                     exit;  
  88.                 }
  89.             }
  90.         }
  91.     }else if ($type == "HARDBOUNCE") {
  92.         if (strstr("X-CampaignID:")) {
  93.             $begin = strrpos($line, ":");
  94.             $CampaignID = substr($line, $begin + 1);
  95.             exit;  
  96.         }
  97.     }else if ($type == "SOFTBOUNCE") {
  98.         if (strstr("X-CampaignID:")) {
  99.             $begin = strrpos($line, ":");
  100.             $CampaignID = substr($line, $begin + 1);
  101.             exit;  
  102.         }
  103.     }else{
  104.         if (strstr($line, "Content-Type: multipart/report; report-type=feedback-report;")) {
  105.             $type = "ARF";
  106.         }
  107.         if (strstr($line, "X-Failed-Recipients")) {
  108.             $type = "BOUNCE";
  109.         }
  110.     }
  111. }
  112.    
  113. if ($type == "ARF" && $CampaignID != "") {
  114.     //Unsubscribe  
  115. }else if ($type == "HARDBOUNCE" && $CampaignID != "") {
  116.     //Unsubscribe  
  117. }else if ($type == "SOFTBOUNCE" && $CampaignID != "") {
  118.     //Retry later or Unsubscribe if max softbounces has been reached
  119. }else{
  120.     //Does Not Compute - Backup plan, foward email for manual review
  121.     mail($notifyemail, "System Notification", $email);
  122. }
  123. ?>
  124.  
Advertisement
Add Comment
Please, Sign In to add comment