diff --git a/library/Class/UsersNonValid.php b/library/Class/UsersNonValid.php
index 3d09e6ba01cbb78340d3d18e87fc125ba411a065..1cb4852e8d2926e109ae2df74c474695607fee03 100644
--- a/library/Class/UsersNonValid.php
+++ b/library/Class/UsersNonValid.php
@@ -30,7 +30,10 @@ class UsersNonValidLoader extends Storm_Model_Loader {
 	public function activateForNewsletterBy($key) {
 		if (!$model = Class_UsersNonValid::findFirstBy(['cle' => $key]))
 			return '';
-		return $model->activateForNewsletter();
+
+		$user = $model->activateForNewsletter();
+		Class_UsersNonValid::deleteBy(['cle' => $key]);
+		return $user;
 	}
 
 
diff --git a/tests/application/modules/opac/controllers/AuthControllerTest.php b/tests/application/modules/opac/controllers/AuthControllerTest.php
index 9721ab4510ad4c53c1a2aeff8c1a5c7daa57b97e..12d14923dd7c99594e3c7cba206671440a21800f 100644
--- a/tests/application/modules/opac/controllers/AuthControllerTest.php
+++ b/tests/application/modules/opac/controllers/AuthControllerTest.php
@@ -1806,6 +1806,13 @@ class AuthControllerNewsletterActiveUserTest extends AuthControllerNoBodyLoggedT
 			'password' => 'random',
 			'cle' => '12345678']);
 
+		$this->fixture('Class_UsersNonValid', [
+			'id' => 2,
+			'login' => 'future@i.am',
+			'mail' => 'future@i.am',
+			'password' => 'random',
+			'cle' => '12345678']);
+
 		$this->dispatch('opac/auth/newsletter-active-user/c/12345678/id/1', true);
 	}
 
@@ -1826,6 +1833,12 @@ class AuthControllerNewsletterActiveUserTest extends AuthControllerNoBodyLoggedT
 	public function successMessageShouldBeAsExpected() {
 		$this->assertXPathContentContains('//p', "Vous avez bien été abonné à la newsletter: News of the month avec l'adresse suivante: future@i.am");
 	}
+
+
+	/** @test */
+	public function allNonValidUsersShouldBeDeleted() {
+		$this->assertEmpty(Class_UsersNonValid::findAll());
+	}
 }