diff --git a/VERSIONS_HOTLINE/136183 b/VERSIONS_HOTLINE/136183
new file mode 100644
index 0000000000000000000000000000000000000000..543c09c7222c20594b3908abadcfb4624d8d9051
--- /dev/null
+++ b/VERSIONS_HOTLINE/136183
@@ -0,0 +1 @@
+ - ticket #136183 : Lettres d'information : Correction d'une erreur dans le processus d'activation de l'inscription en tant qu'invité
\ No newline at end of file
diff --git a/application/modules/opac/controllers/AuthController.php b/application/modules/opac/controllers/AuthController.php
index 969f37c1985f36598795367e8551cb3bd5d22bf2..74593608322a8702c42b412482e8e0e7fce3ed01 100644
--- a/application/modules/opac/controllers/AuthController.php
+++ b/application/modules/opac/controllers/AuthController.php
@@ -424,48 +424,46 @@ class AuthController extends ZendAfi_Controller_Action {
 
 
   public function newsletterRegisterAction() {
-    if('' != $this->_request->getParam('website'))
+    if ('' != $this->_getParam('website'))
       return $this->_redirect('/');
 
-    if(!($id_newsletter = $this->_request->getParam('id')))
+    if (!($id_newsletter = $this->_getParam('id')))
       return $this->_redirect('/');
 
-    if(!($newsletter = Class_Newsletter::find($id_newsletter)))
+    if (!($newsletter = Class_Newsletter::find($id_newsletter)))
       return $this->_redirect('/');
 
     $this->view->newsletter = $newsletter;
 
-    if(null != Class_Users::getIdentity()) {
+    if (Class_Users::hasIdentity()) {
       $_SERVER['HTTP_REFERER'] = '/';
-      return $this->_forward('subscribe-newsletter', 'abonne', 'opac', ['id' => $id_newsletter]);
+      return $this->_forward('subscribe-newsletter', 'abonne', 'opac',
+                             ['id' => $newsletter->getId()]);
     }
 
-    $this->view->titre = $this->view->_('Inscription à la lettre d\'information: ') . $newsletter->getTitre();
+    $this->view->titre = $this->_('Inscription à la lettre d\'information: %s',
+                                  $newsletter->getTitre());
     $this->view->error = '';
-    $this->view->form = new ZendAfi_Form_NewsletterRegister();
+    $this->view->form = $form = new ZendAfi_Form_NewsletterRegister();
 
     if (!$this->_request->isPost()
-        || !$this->view->form->isValid($this->_request->getPost()))
+        || !$form->isValid($this->_request->getPost()))
       return;
 
-    $email = $this->view->form->getValue('email');
+    $email = $form->getValue('email');
     if (!Class_Users::isEmailUnique($email)) {
       $this->view->error = $this->_('Un utilisateur a déjà renseigné cet email. Merci de vous identifier avec le compte qui utilise cet email.');
       return;
     }
 
-    $user = Class_UsersNonValid::newWithMail($email);
-
-    $link = new Class_Entity(['ActivationLink' => (new Class_Url)->absoluteUrl(['module' => 'opac',
-                                                                                'controller' => 'auth',
-                                                                                'action' => 'newsletter-active-user',
-                                                                                'c' => $user->getCle(),
-                                                                                'id' => $newsletter->getId()],
-                                                                               null, true)]);
+    $this->view->titre = $this->_('Demande d\'inscription à la lettre d\'information: %s',
+                                  $newsletter->getTitre());
 
-    $this->view->titre = $this->_('Demande d\'inscription à la lettre d\'information: %s', $newsletter->getTitre());
+    $user = Class_UsersNonValid::newWithMail($email);
+    $mail_result = Class_Newsletter_RegisterNotification::newActivate($newsletter, $user)
+      ->send();
 
-    if (true !== (new Class_Newsletter_RegisterNotification_Activate($newsletter, $user, $link))->send()) {
+    if (true !== $mail_result) {
       $this->view->error = $this->_("Une erreur est survenue à l'envoi du courriel de confirmation d'inscription à la lettre %s à l'adresse %s. Veuillez réessayer. Si le problème persiste, veuillez contacter votre médiathèque.",
                                     $newsletter->getTitre(),
                                     $user->getMail());
@@ -474,26 +472,24 @@ class AuthController extends ZendAfi_Controller_Action {
 
     $this->view->message = $this->_("Une demande de confirmation d'inscription vous a été envoyée à l'adresse mail renseignée.");
 
-    $this->getHelper('ViewRenderer')->renderScript('auth/newsletter-message.phtml');
+    $this->renderScript('auth/newsletter-message.phtml');
   }
 
 
 
   protected function _newsletterRegistrationCompleteSendMail($newsletter, $user) {
-    $link = new Class_Entity(['UnsubscribeLink' => (new Class_Url)->absoluteUrl(['module' => 'opac',
-                                                                                 'controller' => 'newsletter',
-                                                                                 'action' => 'unsubscribe',
-                                                                                 'newsletter' => $newsletter->getId(),
-                                                                                 'user' => $user->getId(),
-                                                                                 'hash' => Class_Newsletter_Template::hashForUser($newsletter->getId(),
-                                                                                                                                  $user->getMail())],null, true)]);
-
-    if (true !== (new Class_Newsletter_RegisterNotification_Welcome($newsletter, $user, $link))->send()) {
-      $this->view->error = $this->_("Le courriel de bienvenue à la lettre d'information '%s' n'a pas pu être envoyé à l'utilisateur %s.", $newsletter->getTitre(), $user->getLogin());
+    $mail_result = Class_Newsletter_RegisterNotification::newWelcome($newsletter, $user)
+      ->send();
+
+    if (true !== $mail_result) {
+      $this->view->error = $this->_("Le courriel de bienvenue à la lettre d'information '%s' n'a pas pu être envoyé à l'utilisateur %s.",
+                                    $newsletter->getTitre(),
+                                    $user->getLogin());
       return false;
     }
 
-    $this->view->message .= $this->_("<br/>Un courriel de bienvenue a été envoyée à l'adresse mail %s.", $user->getMail());
+    $this->view->message .= $this->_("<br/>Un courriel de bienvenue a été envoyée à l'adresse mail %s.",
+                                     $user->getMail());
   }
 
 
@@ -527,22 +523,28 @@ class AuthController extends ZendAfi_Controller_Action {
 
 
   public function newsletterActiveUserAction() {
-    if(!($key = $this->_request->getParam('c')) || !($id_newsletter = $this->_request->getParam('id')))
+    if (!($key = $this->_getParam('c'))
+        || !($id_newsletter = $this->_getParam('id')))
       return $this->_redirect('/');
 
-    if(!$this->view->newsletter = Class_Newsletter::find($id_newsletter))
+    if (!$newsletter = Class_Newsletter::find($id_newsletter)) {
+      $this->notify($this->_('La newsletter est introuvable'));
       return $this->_redirect('/');
+    }
+
+    $this->view->newsletter = $newsletter;
+    $this->view->titre = $this->_('Confirmation d\'inscription à la newsletter: %s',
+                                  $newsletter->getTitre());
 
-    $this->view->titre = $this->view->_("Confirmation d'inscription à la newsletter: ").$this->view->newsletter->getTitre();
     ($this->view->user = Class_UsersNonValid::activateForNewsletterBy($key))
       ? $this->newsletterRegisterUser($this->view->newsletter, $this->view->user)
-      : $this->view->message =  $this->_("Inscription à la newsletter invalide.");
+      : $this->view->message =  $this->_('Inscription à la newsletter invalide.');
   }
 
 
   protected function newsletterRegisterUser($newsletter, $user) {
     if (!$user->addNewsletter($newsletter))
-      return $this->view->message = $this->view->_('Erreur lors de l\inscription à la newsletter.');
+      return $this->view->message = $this->_('Erreur lors de l\'inscription à la newsletter.');
 
     $this->view->message = $this->view->_('Vous avez bien été abonné à la newsletter: %s avec l\'adresse suivante: %s',
                                           $newsletter->getTitre(),
diff --git a/library/Class/Newsletter/RegisterNotification.php b/library/Class/Newsletter/RegisterNotification.php
index affa9b16c5351aacdd3b5c3338e60b920c3f54ad..afaf907fa9c9920c62973800286743f72c2a3cf6 100644
--- a/library/Class/Newsletter/RegisterNotification.php
+++ b/library/Class/Newsletter/RegisterNotification.php
@@ -22,39 +22,51 @@
 abstract class Class_Newsletter_RegisterNotification {
   protected
     $_newsletter,
-    $_user;
+    $_user,
+    $_link,
+    $_adminvar_name_for_subject,
+    $_adminvar_name_for_content;
 
 
-  public function __construct($newsletter, $user, $link) {
+  public static function newActivate($newsletter, $user) {
+    return new Class_Newsletter_RegisterNotificationActivate($newsletter, $user);
+  }
+
+
+  public static function newWelcome($newsletter, $user) {
+    return new Class_Newsletter_RegisterNotificationWelcome($newsletter, $user);
+  }
+
+
+  public function __construct($newsletter, $user) {
     $this->_newsletter = $newsletter;
     $this->_user = $user;
-    $this->_link = $link;
   }
 
+
   public function send() {
     if ((!$newsletter = $this->_newsletter)
         || (!$user = $this->_user)
-        || !($link = $this->_link))
-      return;
+        || !($link = $this->_link())
+        || !$this->_adminvar_name_for_subject
+        || !$this->_adminvar_name_for_content)
+      return false;
 
     $mailer = new Class_MailHtml();
     if (!$mailer->isMailValid($user->getMail()))
-      return;
+      return false;
 
     $data_source = ['newsletter' => $newsletter,
                     'user' => $user,
                     'link' => $link];
 
-    $body = $this->_transform($this->_contentTemplate(), $data_source);
-    $subject = $this->_transform($this->_subjectTemplate(), $data_source);
-    $mail_admin = Class_Profil::getCurrentProfil()->getMailSiteOrPortail();
-
-    if ($mail_admin)
-      $mailer->setFrom($mail_admin);
+    $body = $this->_transform(Class_AdminVar::getValueOrDefault($this->_adminvar_name_for_content),
+                              $data_source);
+    $subject = $this->_transform(Class_AdminVar::getValueOrDefault($this->_adminvar_name_for_subject),
+                                 $data_source);
 
     $mail = $mailer->prepare($user->getMail(), $subject, $body, true);
 
-
     return $mailer->send($mail);
   }
 
@@ -67,25 +79,57 @@ abstract class Class_Newsletter_RegisterNotification {
   }
 
 
-  /** @return string Class_ModeleFusion compatible text */
-  abstract protected function _subjectTemplate();
+  abstract protected function _link();
+}
 
 
-  /** @return string Class_ModeleFusion compatible text */
-  abstract protected function _contentTemplate();
-}
 
 
+class Class_Newsletter_RegisterNotificationWelcome extends Class_Newsletter_RegisterNotification {
+  protected
+    $_adminvar_name_for_subject = 'NEWSLETTER_TEMPLATE_REGISTER_WELCOME_SUBJECT',
+    $_adminvar_name_for_content = 'NEWSLETTER_TEMPLATE_REGISTER_WELCOME_HTML';
 
 
-class Class_Newsletter_RegisterNotification_Welcome extends Class_Newsletter_RegisterNotification {
+  protected function _link() {
+    if (!$this->_user || !$this->_newsletter)
+      return;
 
-  protected function _subjectTemplate(){
-    return Class_AdminVar::getValueOrDefault('NEWSLETTER_TEMPLATE_REGISTER_WELCOME_SUBJECT');
-  }
+    $hash = Class_Newsletter_Template::hashForUser($this->_newsletter->getId(),
+                                                   $this->_user->getMail());
 
+    $url = Class_Url::absolute(['module' => 'opac',
+                                'controller' => 'newsletter',
+                                'action' => 'unsubscribe',
+                                'newsletter' => $this->_newsletter->getId(),
+                                'user' => $this->_user->getId(),
+                                'hash' => $hash],
+                               null, true);
 
-  protected function _contentTemplate(){
-    return Class_AdminVar::getValueOrDefault('NEWSLETTER_TEMPLATE_REGISTER_WELCOME_HTML');
+    return new Class_Entity(['UnsubscribeLink' => $url]);
   }
 }
+
+
+
+
+class Class_Newsletter_RegisterNotificationActivate extends Class_Newsletter_RegisterNotification {
+  protected
+    $_adminvar_name_for_subject = 'NEWSLETTER_TEMPLATE_REGISTER_NEWUSER_SUBJECT',
+    $_adminvar_name_for_content = 'NEWSLETTER_TEMPLATE_REGISTER_NEWUSER_HTML';
+
+
+  protected function _link() {
+    if (!$this->_user || !$this->_newsletter)
+      return;
+
+    $url = Class_Url::absolute(['module' => 'opac',
+                                'controller' => 'auth',
+                                'action' => 'newsletter-active-user',
+                                'c' => $this->_user->getCle(),
+                                'id' => $this->_newsletter->getId()],
+                               null, true);
+
+    return new Class_Entity(['ActivationLink' => $url]);
+  }
+}
\ No newline at end of file
diff --git a/library/Class/Newsletter/RegisterNotification/Activate.php b/library/Class/Newsletter/RegisterNotification/Activate.php
deleted file mode 100644
index b5afeb7bb24309301e758c064c29bb8b410dd4eb..0000000000000000000000000000000000000000
--- a/library/Class/Newsletter/RegisterNotification/Activate.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-/**
- * Copyright (c) 2012-2020, Agence Française Informatique (AFI). All rights reserved.
- *
- * BOKEH is free software; you can redistribute it and/or modify
- * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
- * the Free Software Foundation.
- *
- * There are special exceptions to the terms and conditions of the AGPL as it
- * is applied to this software (see README file).
- *
- * BOKEH is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
- *
- * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
- * along with BOKEH; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
- */
-
-
-class Class_Newsletter_RegisterNotification_Activate extends Class_Newsletter_RegisterNotification {
-
-  protected function _subjectTemplate(){
-    return Class_AdminVar::getValueOrDefault('NEWSLETTER_TEMPLATE_REGISTER_NEWUSER_SUBJECT');
-  }
-
-  protected function _contentTemplate(){
-    return Class_AdminVar::getValueOrDefault('NEWSLETTER_TEMPLATE_REGISTER_NEWUSER_HTML');
-  }
-}
\ No newline at end of file
diff --git a/library/Class/UsersNonValid.php b/library/Class/UsersNonValid.php
index 87fe8cb6bb4c8cd87cc78d3b55ed0bea6a84786b..4f2ae2403f4d1d74105f6184af6a3e076886fba1 100644
--- a/library/Class/UsersNonValid.php
+++ b/library/Class/UsersNonValid.php
@@ -31,8 +31,9 @@ class UsersNonValidLoader extends Storm_Model_Loader {
     if (!$model = Class_UsersNonValid::findFirstBy(['cle' => $key]))
       return '';
 
-    $user = $model->activateForNewsletter();
-    Class_UsersNonValid::deleteBy(['mail' => $user->getMail()]);
+    if ($user = $model->activateForNewsletter())
+      Class_UsersNonValid::deleteBy(['mail' => $user->getMail()]);
+
     return $user;
   }
 
@@ -154,13 +155,15 @@ class Class_UsersNonValid extends Storm_Model_Abstract {
 
 
   public function activateForNewsletter() {
-    return $this->activate() ? $this->_user: '';
+    return $this->activate()
+      ? $this->_user
+      : '';
   }
 
 
   public function getBibLibelle() {
-    return $this->hasBib()
-      ? $this->getBib()->getLibelle()
+    return ($bib = $this->getBib())
+      ? $bib->getLibelle()
       : '';
   }
 
diff --git a/tests/application/modules/opac/controllers/AuthControllerTest.php b/tests/application/modules/opac/controllers/AuthControllerTest.php
index fe36e939f0ce082f90d46cd0ab2dff4740c11626..d76cc2622a1467913f24bf4039a00083c10b3e0a 100644
--- a/tests/application/modules/opac/controllers/AuthControllerTest.php
+++ b/tests/application/modules/opac/controllers/AuthControllerTest.php
@@ -2281,11 +2281,8 @@ class AuthControllerPostRegisterNewsletterDailyNewsWithBadMailTest extends AuthC
 
 
 
-class AuthControllerNewsletterActiveUserWithWrongParamsTest extends AuthControllerNoBodyLoggedTestCase {
-  public function setUp() {
-    parent::setUp();
-  }
-
+class AuthControllerNewsletterActiveUserWithWrongParamsTest
+  extends AuthControllerNoBodyLoggedTestCase {
 
   /** @test */
   public function noParamsShouldRedirectToIndex() {