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

evrpress/PHP-Bounce-Handler

This branch is 4 commits ahead of rbairwell/PHP-Bounce-Handler:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
Xaver
Jan 4, 2018
40daff8 · Jan 4, 2018

History

35 Commits
Jan 1, 2015
Dec 29, 2014
Dec 29, 2014
Jun 19, 2014
Jan 4, 2018
Dec 28, 2017
Dec 28, 2017
Dec 29, 2014
Dec 29, 2014

Repository files navigation

<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>

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 100.0%