mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
elofgren: NEW FEATURE: If the contents of the X-SilverStripeMessageID header is sent to /Email_BounceHandler in the 'SilverStripeMessageID' _GET variable, then it will be logged in the Newsletter_SentRecipient table so that the bounce report will show up on the 'Sent Status Report' tab of the Newsletter. @TODO: Add checkboxes checked by default to the 'Bounced' tab of the 'Mailing List' to not send to in the future (use Email_BlackList?), unticking resends. In addition, add ability to remove bounced emails from mailing list.
(merged from branches/gsoc) git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@41981 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
parent
481781c797
commit
cbe32dca20
@ -830,9 +830,40 @@ class Email_BounceHandler extends Controller {
|
||||
|
||||
$member = DataObject::get_one( 'Member', "`Email`='$SQL_email'" );
|
||||
|
||||
if( $member )
|
||||
if( $member ) {
|
||||
$record->MemberID = $member->ID;
|
||||
|
||||
// If the SilverStripeMessageID (taken from the X-SilverStripeMessageID header embedded in the email) is sent,
|
||||
// then log this bounce in a Newsletter_SentRecipient record so it will show up on the 'Sent Status Report' tab of the Newsletter
|
||||
if( isset($_REQUEST['SilverStripeMessageID'])) {
|
||||
// Note: was sent out with: $project . '.' . $messageID;
|
||||
$message_id_parts = explode('.', $_REQUEST['SilverStripeMessageID']);
|
||||
// Note: was encoded with: base64_encode( $newsletter->ID . '_' . date( 'd-m-Y H:i:s' ) );
|
||||
$newsletter_id_date_parts = explode ('_', base64_decode($message_id_parts[1]) );
|
||||
|
||||
// Escape just in case
|
||||
$SQL_memberID = Convert::raw2sql($member->ID);
|
||||
$SQL_newsletterID = Convert::raw2sql($newsletter_id_date_parts[0]);
|
||||
// Log the bounce
|
||||
$oldNewsletterSentRecipient = DataObject::get_one("Newsletter_SentRecipient", "MemberID = '$SQL_memberID' AND ParentID = '$SQL_newsletterID' AND Email = '$SQL_email'");
|
||||
// Update the Newsletter_SentRecipient record if it exists
|
||||
if($oldNewsletterSentRecipient) {
|
||||
$oldNewsletterSentRecipient->Result = 'Bounced';
|
||||
$oldNewsletterSentRecipient->write();
|
||||
} else {
|
||||
// For some reason it didn't exist, create a new record
|
||||
$newNewsletterSentRecipient = new Newsletter_SentRecipient();
|
||||
$newNewsletterSentRecipient->Email = $SQL_email;
|
||||
$newNewsletterSentRecipient->MemberID = $member->ID;
|
||||
$newNewsletterSentRecipient->Result = 'Bounced';
|
||||
$newNewsletterSentRecipient->ParentID = $newsletter_id_date_parts[0];
|
||||
$newNewsletterSentRecipient->write();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
if( !$date )
|
||||
$date = date( 'd-m-Y' );
|
||||
/*else
|
||||
|
Loading…
Reference in New Issue
Block a user