diff --git a/htdocs/adherents/admin/website.php b/htdocs/adherents/admin/website.php
index 401cb68a4b6..92d09e3a9b3 100644
--- a/htdocs/adherents/admin/website.php
+++ b/htdocs/adherents/admin/website.php
@@ -243,7 +243,7 @@ if (getDolGlobalString('MEMBER_ENABLE_PUBLIC')) {
print '
| ';
print $langs->trans("ForceMemberNature");
print ' | ';
- $forcenature = getDolGlobalInt('MEMBER_NEWFORM_FORCEMORPHY', 0);
+ $forcenature = getDolGlobalString('MEMBER_NEWFORM_FORCEMORPHY'); // 'phy' or 'mor'
print $form->selectarray("MEMBER_NEWFORM_FORCEMORPHY", $morphys, $forcenature, 1);
print " |
\n";
diff --git a/htdocs/core/class/CMailFile.class.php b/htdocs/core/class/CMailFile.class.php
index ff224336a03..89a3b921328 100644
--- a/htdocs/core/class/CMailFile.class.php
+++ b/htdocs/core/class/CMailFile.class.php
@@ -8,6 +8,7 @@
* Copyright (C) 2005-2012 Regis Houssin
* Copyright (C) 2019-2024 Frédéric France
* Copyright (C) 2024 MDW
+ * Copyright (C) 2025 Joachim Kueter
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -624,7 +625,9 @@ class CMailFile
if (!empty($this->atleastonefile)) {
foreach ($filename_list as $i => $val) {
$content = file_get_contents($filename_list[$i]);
- $smtps->setAttachment($content, $mimefilename_list[$i], $mimetype_list[$i], (empty($cid_list[$i]) ? '' : $cid_list[$i]));
+ if (empty($cid_list[$i])) {
+ $smtps->setAttachment($content, $mimefilename_list[$i], $mimetype_list[$i], (empty($cid_list[$i]) ? '' : $cid_list[$i]));
+ }
}
}
@@ -1859,15 +1862,17 @@ class CMailFile
$mimetype_list[$i] = "application/octet-stream";
}
+ // Skip files that have a CID (they will be added as inline images instead)
+ if (!empty($cidlist) && is_array($cidlist) && isset($cidlist[$i]) && $cidlist[$i] !== null && $cidlist[$i] !== '') {
+ continue; // Skip this file as it will be processed as inline image
+ }
+
$out .= "--".$this->mixed_boundary.$this->eol;
+
$out .= "Content-Disposition: attachment; filename=\"".$filename_list[$i]."\"".$this->eol;
$out .= "Content-Type: ".$mimetype_list[$i]."; name=\"".$filename_list[$i]."\"".$this->eol;
$out .= "Content-Transfer-Encoding: base64".$this->eol;
$out .= "Content-Description: ".$filename_list[$i].$this->eol;
- if (!empty($cidlist) && is_array($cidlist) && $cidlist[$i]) {
- $out .= "X-Attachment-Id: ".$cidlist[$i].$this->eol;
- $out .= "Content-ID: <".$cidlist[$i].'>'.$this->eol;
- }
$out .= $this->eol;
$out .= $encoded;
$out .= $this->eol;
@@ -2197,6 +2202,22 @@ class CMailFile
$i++;
}
+ // Also add cidfromdata images to images_encoded array so they are sent as inline images
+ foreach ($this->html_images as $img) {
+ if ($img['type'] == 'cidfromdata') {
+ $image_content = file_get_contents($img['fullpath']);
+ if ($image_content !== false) {
+ $idx = count($this->images_encoded);
+ $this->images_encoded[$idx]['name'] = $img['name'];
+ $this->images_encoded[$idx]['fullpath'] = $img['fullpath'];
+ $this->images_encoded[$idx]['content_type'] = $img['content_type'];
+ $this->images_encoded[$idx]['cid'] = $img['cid'];
+ $this->images_encoded[$idx]['type'] = 'cidfromdata';
+ $this->images_encoded[$idx]['image_encoded'] = chunk_split(base64_encode($image_content), 68, $this->eol);
+ }
+ }
+ }
+
return 1;
} else {
return 0;