diff --git a/protected_node.install b/protected_node.install
index 1a26e81..ee7be5b 100644
--- a/protected_node.install
+++ b/protected_node.install
@@ -133,6 +133,11 @@ function protected_node_schema() {
         'not null' => TRUE,
         'default' => 0,
       ),
+      'protected_node_emails' => array(
+        'description' => 'List of email addresses which needs to receive a notification.',
+        'type' => 'text',
+        'size' => 'normal',
+      ),
       'protected_node_hint' => array(
         'description' => 'A hint about the password on this node.',
         'type' => 'text',
@@ -169,3 +174,14 @@ function protected_node_uninstall() {
     ->condition('name', 'protected_node_%%', 'LIKE')
     ->execute();
 }
+
+/**
+ * Adds a protected_node_emails field to the protected_nodes table.
+ */
+function protected_node_update_7100() {
+  db_add_field('protected_nodes', 'protected_node_emails', array(
+    'type' => 'text',
+    'size' => 'normal',
+    'description' => 'List of email addresses which needs to receive a notification.'
+  ));
+}
diff --git a/protected_node.module b/protected_node.module
index 535538d..89c07ff 100644
--- a/protected_node.module
+++ b/protected_node.module
@@ -410,8 +410,11 @@ function protected_node_node_load($node, $types) {
  * Implements hook_node_validate().
  */
 function protected_node_node_validate($node, $form) {
+  global $_protected_node_emails;
+  global $_protected_node_random_passwd;
   $_protected_node_emails = '';
   $_protected_node_random_passwd = '';
+
   if ($node->protected_node_is_protected
      && (user_access('edit any password') || user_access('edit ' . $node->type . ' password'))) {
     $missing_password = FALSE;
@@ -508,6 +511,10 @@ function protected_node_node_insert($node) {
  * Implements hook_node_update().
  */
 function protected_node_node_update($node) {
+  // The node type is never protected if $node->protected_node_is_protected is not set
+  if (isset($node->protected_node_is_protected) === FALSE) {
+    return;
+  }
 
   // ugly but we want to keep some variables between the validation and insert/update
   global $_protected_node_emails;
@@ -517,11 +524,16 @@ function protected_node_node_update($node) {
     if (!empty($_protected_node_random_passwd)) {
       $node->protected_node_passwd = $_protected_node_random_passwd;
     }
+
+    // Get previous emails from database
+    $emails_before = node_load($node->nid);
+    $emails_before = $emails_before->protected_node_emails;
     if (!empty($_protected_node_emails)) {
       $node->protected_node_emails = $_protected_node_emails;
     }
+
     _protected_node_save($node);
-    if ($node->protected_node_is_protected && !empty($node->protected_node_emails)) {
+    if ($node->protected_node_is_protected && !empty($node->protected_node_emails) && $node->protected_node_emails != $emails_before) {
       module_load_include('mail.inc', 'protected_node');
       protected_node_send_mail($node);
     }
@@ -687,6 +699,7 @@ function _protected_node_save(&$node) {
       'protected_node_passwd' =>$node->protected_node_passwd,
       'protected_node_show_title' => $node->protected_node_show_title,
       'protected_node_hint' => isset($node->protected_node_hint) ? $node->protected_node_hint : '',
+      'protected_node_emails' => isset($node->protected_node_emails) ? $node->protected_node_emails : '',
      );
     if ($changed) {
       $args['protected_node_passwd_changed'] = REQUEST_TIME;
@@ -713,7 +726,8 @@ function _protected_node_save(&$node) {
         'protected_node_passwd' => $node->protected_node_passwd,
         'protected_node_show_title' => $node->protected_node_show_title,
         'nid' => $node->nid,
-        'protected_node_hint' => isset($node->protected_node_hint) ? $node->protected_node_hint : ''
+        'protected_node_hint' => isset($node->protected_node_hint) ? $node->protected_node_hint : '',
+        'protected_node_emails' => isset($node->protected_node_emails) ? $node->protected_node_emails : '',
       ))
       ->execute();
   }
@@ -740,6 +754,7 @@ function protected_node_load($nodes) {
       'protected_node_passwd_changed' => 0,
       'protected_node_show_title' => 0,
       'protected_node_hint' => '',
+      'protected_node_emails' => '',
     );
 
     // can the node be protected at all?
@@ -749,7 +764,7 @@ function protected_node_load($nodes) {
       return $default_fields;
     }
 
-    $result = db_query("SELECT protected_node_is_protected, protected_node_passwd, protected_node_passwd_changed, protected_node_show_title, protected_node_hint FROM {protected_nodes} WHERE nid = :nid", array(':nid' => $node->nid))->fetchAssoc();
+    $result = db_query("SELECT protected_node_is_protected, protected_node_passwd, protected_node_passwd_changed, protected_node_show_title, protected_node_hint, protected_node_emails FROM {protected_nodes} WHERE nid = :nid", array(':nid' => $node->nid))->fetchAssoc();
     if (!is_array($result)) {
       // the SELECT failed, use the defaults
       $result = $default_fields;
diff --git a/protected_node.settings.inc b/protected_node.settings.inc
index 8d4d77e..baa00f8 100644
--- a/protected_node.settings.inc
+++ b/protected_node.settings.inc
@@ -212,6 +212,12 @@ function protected_node_node_form_alter(&$form) {
   $width_height = variable_get('protected_node_email_box', '');
   if ($width_height) {
     list($width, $height) = explode('x', $width_height);
+    if (isset($form['#node']->protected_node_emails)) {
+      $emails = $form['#node']->protected_node_emails;
+    }
+    else {
+      $emails = '';
+    }
     $form['protected_node']['protected_node_emails'] = array(
       '#type' => 'textarea',
       '#description' => t('Enter a list of email addresses separated by newlines and/or commas. At the time you save the page, each one of those users will be sent an email with a link back to this page and optionally the password.')
@@ -219,6 +225,7 @@ function protected_node_node_form_alter(&$form) {
         . t('<strong>WARNING</strong>: for an email to be sent you MUST (1) protect the node; (2) re-enter the password; (3) publish the page.')
         . '<br />'
         . t('The password is necessary only if you used [node-password] in the email message. It is necessary to re-enter it because it is otherwise encrypted in the database.'),
+      '#default_value' => $emails,
       '#cols' => $width,
       '#rows' => $height,
     );
