Skip to content

This class can be used to parse bounced message reports. It parses e-mail messages with multipart report content type formatted according to RFC 1892 and 1894 documents. If the bounce is not well formed, it also tries to extract some useful information. Exim is supported, partially. Please send bounce messages from your busted MTA, I'll extend t…

Notifications You must be signed in to change notification settings

rmast/PHP-Bounce-Handler

 
 

Repository files navigation

Quick and dirty bounce handler

Usage

require_once('bounce_driver.class.php'); $bouncehandler=new Bouncehandler(); $multiArray=$bouncehandler->get_the_facts(\$strEmail)

( $multiArray=$bouncehandler->get_the_facts($strEmail) can be replaced by $multiArray = $bouncehandler->parse_email($strEmail) )

Returns a multi-dimensional associative array of bounced recipient addresses and their SMTP status codes (if available) - see print_r(\$multiArray);

Will return recipient's email address, the RFC1893 error code, and the action. Action can be one of the following:

transient
Temporary problem
failed
Permanent problem
autoresponse
Vacation auto-response/auto-responder
""
Empty string - not classified

You could dereference the $multiArray in a 'for loop', for example...

    foreach($multiArray as $the){
        switch($the['action']){
            case 'failed':
                //do something
                kill_him($the['recipient']);
                break;
            case 'transient':
                //do something else
                $num_attempts  = delivery_attempts($the['recipient']);
                if($num_attempts  > 10){
                    kill_him($the['recipient']);
                }
                else{
                    insert_into_queue($the['recipient'], ($num_attempts+1));
                }
                break;
            case 'autoresponse':
                //do something different
                postpone($the['recipient'], '7 days');
                break;
            default:
                //don't do anything
                break;
        }
    }

Or, if it is an FBL, you could use the class variables to access the data (Unlike Multipart-reports, FBL's report only one bounce) You could also use them if the output array has only one index:

    if($bouncehandler->type == 'fbl'
       or count($bouncehandler->output) == 1)
    {
        echo $bouncehandler->action;
        echo $bouncehandler->status;
        echo $bouncehandler->recipient;
        echo $bouncehandler->feedback_type;
    }

These class variables are safe for all bounce types:

  • $bouncehandler->type
  • $bouncehandler->subject
  • $bouncehandler->web_beacon_1
  • $bouncehandler->web_beacon_2
  • $bouncehandler->x_header_beacon_1
  • $bouncehandler->x_header_beacon_2

That's all you need to know, but if you want to get more complicated you can. Most methods are public. See source code.

About

This class can be used to parse bounced message reports. It parses e-mail messages with multipart report content type formatted according to RFC 1892 and 1894 documents. If the bounce is not well formed, it also tries to extract some useful information. Exim is supported, partially. Please send bounce messages from your busted MTA, I'll extend t…

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PHP 82.1%
  • Roff 17.9%