djmerelo/php-bounce-handler

This package is abandoned and no longer maintained. The author suggests using the voku/bounce-mail-handler package instead.

This package is a fork from the Filsh/PHP-Bounce-Handler

1.0.0 2016-07-21 08:56 UTC

This package is not auto-updated.

Last update: 2017-06-16 10:09:31 UTC


README

<p>Quick and dirty bounce handler</p>
<p><strong>Usage</strong></p>
<blockquote><code>
    require_once('bounce_driver.class.php');
    $bouncehandler=new Bouncehandler();
    $multiArray=$bouncehandler->get_the_facts(\$strEmail)
</code></blockquote>

<p>( $multiArray=$bouncehandler->get_the_facts(\$strEmail) can be replaced by $multiArray = $bouncehandler->parse_email($strEmail) )</p>
<p>Returns a multi-dimensional associative array of bounced recipient addresses and their SMTP status codes (if available) - see
    <code>print_r(\$multiArray);</code></p>

<p>Will return recipient's email address, the RFC1893 error code, and the action.  Action can be one of the following:<dl>
    <dt>transient</dt><dd>Temporary problem</dd>
    <dt>failed</dt><dd>Permanent problem</dd>
    <dt>autoresponse</dt><dd>Vacation auto-response/auto-responder<dd>
    <dt>""</dt><dd>Empty string - not classified</dd>
</dl></p>

You could dereference the \$multiArray in a 'for loop', for example...</P>
<pre>
    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;
        }
    }
</pre>

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:

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

These class variables are safe for all bounce types:
<ul>
    <li>$bouncehandler->type</li>
    <li>$bouncehandler->subject</li>
    <li>$bouncehandler->web_beacon_1</li>
    <li>$bouncehandler->web_beacon_2</li>
    <li>$bouncehandler->x_header_beacon_1</li>
    <li>$bouncehandler->x_header_beacon_2</li>

</ul>

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