From af3d971154f38e616177efeb4582ccfb5a1c6493 Mon Sep 17 00:00:00 2001 From: Vlad Date: Fri, 16 Jun 2017 18:10:03 -0400 Subject: [PATCH 1/4] Uses "fake" unsubscribe URL to set the "list-unsubscribe" header --- lib/API/JSON/v1/Newsletters.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/API/JSON/v1/Newsletters.php b/lib/API/JSON/v1/Newsletters.php index beab51932c..e550e7933e 100644 --- a/lib/API/JSON/v1/Newsletters.php +++ b/lib/API/JSON/v1/Newsletters.php @@ -296,7 +296,8 @@ class Newsletters extends APIEndpoint { $sender = false, $reply_to = false ); - $result = $mailer->send($rendered_newsletter, $data['subscriber']); + $extra_params = array('unsubscribe_url' => home_url()); + $result = $mailer->send($rendered_newsletter, $data['subscriber'], $extra_params); if($result['response'] === false) { $error = sprintf( From f72ceb2dbe8592057bfe53f6f526b45ea1a23d4c Mon Sep 17 00:00:00 2001 From: Vlad Date: Fri, 16 Jun 2017 18:14:30 -0400 Subject: [PATCH 2/4] Disables "view in browser", "manage subscription" and "unsubscribe" links in preview emails --- lib/API/JSON/v1/Newsletters.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/API/JSON/v1/Newsletters.php b/lib/API/JSON/v1/Newsletters.php index e550e7933e..05c3efcb15 100644 --- a/lib/API/JSON/v1/Newsletters.php +++ b/lib/API/JSON/v1/Newsletters.php @@ -279,7 +279,9 @@ class Newsletters extends APIEndpoint { $shortcodes = new \MailPoet\Newsletter\Shortcodes\Shortcodes( $newsletter, - $subscriber + $subscriber, + $queue = false, + $wp_user_preview = true ); list( From 8d496e7aa3c6a295292abdf6e55aaeb76a790abb Mon Sep 17 00:00:00 2001 From: Vlad Date: Mon, 19 Jun 2017 09:08:19 -0400 Subject: [PATCH 3/4] Adds unit test for fake unsubscribe url --- tests/unit/API/JSON/v1/NewslettersTest.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/unit/API/JSON/v1/NewslettersTest.php b/tests/unit/API/JSON/v1/NewslettersTest.php index 53cbbe6033..3a7f70c14f 100644 --- a/tests/unit/API/JSON/v1/NewslettersTest.php +++ b/tests/unit/API/JSON/v1/NewslettersTest.php @@ -585,10 +585,11 @@ class NewslettersTest extends MailPoetTest { 'mailer' => Stub::makeEmpty( '\MailPoet\Mailer\Mailer', array( - 'send' => function($newsletter, $subscriber) { + 'send' => function($newsletter, $subscriber, $extra_params) { expect(is_array($newsletter))->true(); expect($newsletter['body']['text'])->contains('Hello test'); expect($subscriber)->equals($subscriber); + expect($extra_params['unsubscribe_url'])->equals(home_url()); return array('response' => true); } ) From 43c2908a2be2399d5823b79041dfc4921a4308b9 Mon Sep 17 00:00:00 2001 From: Vlad Date: Mon, 19 Jun 2017 10:42:10 -0400 Subject: [PATCH 4/4] Adds unit test for "preview" mode, which replaces system links with hashes in preview emails --- tests/unit/API/JSON/v1/NewslettersTest.php | 4 ++++ tests/unit/_bootstrap.php | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/tests/unit/API/JSON/v1/NewslettersTest.php b/tests/unit/API/JSON/v1/NewslettersTest.php index 3a7f70c14f..09400b4fba 100644 --- a/tests/unit/API/JSON/v1/NewslettersTest.php +++ b/tests/unit/API/JSON/v1/NewslettersTest.php @@ -590,6 +590,10 @@ class NewslettersTest extends MailPoetTest { expect($newsletter['body']['text'])->contains('Hello test'); expect($subscriber)->equals($subscriber); expect($extra_params['unsubscribe_url'])->equals(home_url()); + // system links are replaced with hashes + expect($newsletter['body']['html'])->contains('href="#">View in browser'); + expect($newsletter['body']['html'])->contains('href="#">Unsubscribe'); + expect($newsletter['body']['html'])->contains('href="#">Manage subscription'); return array('response' => true); } ) diff --git a/tests/unit/_bootstrap.php b/tests/unit/_bootstrap.php index ce4f15b7d1..0b67101785 100644 --- a/tests/unit/_bootstrap.php +++ b/tests/unit/_bootstrap.php @@ -1,6 +1,8 @@ LinkHello [subscriber:firstname | default:test]" + "text": "View in browser link Post link Hello [subscriber:firstname | default:test] Unsubscribe link Manage subscription link" } ] }