--- old\simplenews\simplenews.module
+++ new\simplenews\simplenews.module
@@ -1774,6 +1774,7 @@
   module_load_include('inc', 'simplenews', 'includes/simplenews.mail');
   $context = $params['context'];
   $langcode = $message['language']->language;
+  $buffertid = $context['newsletter']->tid;
 
   switch ($key) {
     case 'node':
@@ -1809,20 +1810,20 @@
         }
         // If a translation of the node is used and this node is not available in
         // the message buffer, then load this node.
-        if ($nid != $context['node']->nid && !isset($messages[$nid][$langcode])) {
+        if ($nid != $context['node']->nid && !isset($messages[$nid][$langcode][$buffertid])) {
           $context['node'] = node_load($nid);
         }
       }
 
       // Check if this node-language pair has been buffered.
       // If not, build the message and store it for later use.
-      if (!isset($messages[$nid][$langcode])) {
+      if (!isset($messages[$nid][$langcode][$buffertid])) {
         $node = drupal_clone($context['node']);
 
         // Add simplenews specific header data
         $headers = array_merge($message['headers'], _simplenews_headers($node, $params['from']['address']));
         $headers['From'] = $params['from']['formatted'];
-        $message['headers'] = $messages[$nid][$langcode]['headers'] = $headers;
+        $message['headers'] = $messages[$nid][$langcode][$buffertid]['headers'] = $headers;
 
         // Build email subject
         $subject = '[[simplenews-newsletters-name]] [title-raw]';
@@ -1839,7 +1840,7 @@
         $subject = token_replace($subject, 'simplenews', $context);
         $subject = token_replace($subject, 'node', $context['node']);
         $subject = str_replace(array("\r", "\n"), '', $subject);
-        $message['subject'] = $messages[$nid][$langcode]['subject'] = $subject;
+        $message['subject'] = $messages[$nid][$langcode][$buffertid]['subject'] = $subject;
 
         // Set the active language to the node's language.
         // This needs to be done as otherwise the language used to send the mail
@@ -1864,7 +1865,7 @@
           'simplenews_newsletter_body'), $node, $message['language']);
 
         // Buffer body text node and language specific
-        $messages[$nid][$langcode]['body'] = $body;
+        $messages[$nid][$langcode][$buffertid]['body'] = $body;
 
         if (variable_get('simplenews_opt_inout_' . $tid, 'double') != 'hidden') {
           // TODO: Unsubscribe links are broken if key=='test' && $context['snid']==0
@@ -1872,7 +1873,7 @@
           // Build and buffer message footer
           $footer = theme(array('simplenews_newsletter_footer__' . $context['node']->simplenews['tid'],
             'simplenews_newsletter_footer'), $context, $key, $message['language']);
-          $messages[$nid][$langcode]['footer'] = $footer;
+          $messages[$nid][$langcode][$buffertid]['footer'] = $footer;
         }
 
         // Reset the language to the original settings.
@@ -1883,10 +1884,10 @@
       }
       else {
         // Get message data from buffer
-        $message['headers'] = $messages[$nid][$langcode]['headers'];
-        $message['subject'] = $messages[$nid][$langcode]['subject'];
-        $body               = $messages[$nid][$langcode]['body'];
-        $footer             = $messages[$nid][$langcode]['footer'];
+        $message['headers'] = $messages[$nid][$langcode][$buffertid]['headers'];
+        $message['subject'] = $messages[$nid][$langcode][$buffertid]['subject'];
+        $body               = $messages[$nid][$langcode][$buffertid]['body'];
+        $footer             = $messages[$nid][$langcode][$buffertid]['footer'];
       }
 
       // Build message body, replace tokens.
