diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Entity_sendEmail.xml b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Entity_sendEmail.xml
index 99c356f6142afac154cc00bde516ff1ffbe414f6..95918e61319e37ce91451a63fd4b066244c1667b 100644
--- a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Entity_sendEmail.xml
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Entity_sendEmail.xml
@@ -50,7 +50,9 @@
         </item>
         <item>
             <key> <string>_body</string> </key>
-            <value> <string>from email.utils import formataddr\n
+            <value> <string encoding="cdata"><![CDATA[
+
+from email.utils import formataddr\n
 portal = context.getPortalObject()\n
 event = portal.restrictedTraverse(event_relative_url)\n
 \n
@@ -82,23 +84,23 @@ mail_message = portal.Base_createMailMessageAsString(from_url,\n
 \n
 event.sendMailHostMessage(mail_message)\n
 \n
-if not event.hasData():\n
+if not event.hasData() and len(event.getDestinationList()) > 1:\n
   # Store the content of the email as data, so that we can keep a reference to\n
   # the email that was actually sent.\n
-  # XXX this has no meaning in the case of an email with multiple recipents.\n
+  # We do not store when there is more than one recipent.\n
   if len(embedded_file_list):\n
     # do not store aggregated documents in Email document\n
     # to avoid duplicate data\n
-    tmp_mail_message = context.Base_createMailMessageAsString(from_url,\n
+    mail_message = context.Base_createMailMessageAsString(from_url,\n
       to_url,\n
       subject,\n
       body,\n
       content_type,\n
       attachment_list=attachment_list)\n
-    event.setData(tmp_mail_message)\n
-  else:\n
-    event.setData(mail_message)\n
-</string> </value>
+  event.setData(mail_message)\n
+
+
+]]></string> </value>
         </item>
         <item>
             <key> <string>_params</string> </key>
diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/MailMessage_sendByActivity.xml b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/MailMessage_sendByActivity.xml
index 2d4e48cd0209551cd850ea02833bb451beec19f8..1b92b4a8db9155b2bccf1b5ca86d15be1597dbbd 100644
--- a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/MailMessage_sendByActivity.xml
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/MailMessage_sendByActivity.xml
@@ -50,10 +50,17 @@
         </item>
         <item>
             <key> <string>_body</string> </key>
-            <value> <string>context.getPortalObject().portal_catalog.searchAndActivate(\n
+            <value> <string># We do not want to retry those activities, as sending email is not transactional safe\n
+activate_kw = kw.pop(\'activate_kw\', {})\n
+activate_kw[\'max_retry\'] = 0\n
+activate_kw[\'conflict_retry\'] = False\n
+\n
+context.getPortalObject().portal_catalog.searchAndActivate(\n
   method_id="Entity_sendEmail",\n
   destination_related_uid=context.getUid(),\n
-  method_kw=method_kw, **kw)\n
+  method_kw=method_kw,\n
+  activate_kw=activate_kw,\n
+  **kw)\n
 </string> </value>
         </item>
         <item>