FIX Mail smtps truncated if content has a line with single .

This commit is contained in:
Laurent Destailleur 2020-02-09 15:51:43 +01:00
parent 6daa10b499
commit 5c000159c1

View File

@ -205,7 +205,7 @@ class CMailFile
if (empty($msg))
{
dol_syslog("CMailFile::CMailfile: Try to send an email with empty body");
$msg = '.'; // Avoid empty message (with empty message conten show a multipart structure)
$msg = '.'; // Avoid empty message (with empty message content, you will see a multipart structure)
}
// Detect if message is HTML (use fast method)
@ -227,7 +227,7 @@ class CMailFile
//$urlwithroot=DOL_MAIN_URL_ROOT; // This is to use same domain name than current
// Replace relative /viewimage to absolute path
$msg = preg_replace('/src="'.preg_quote(DOL_URL_ROOT, '/').'\/viewimage\.php/ims', 'src="'.$urlwithroot.'/viewimage.php', $msg, -1, $nbrep);
$msg = preg_replace('/src="'.preg_quote(DOL_URL_ROOT, '/').'\/viewimage\.php/ims', 'src="'.$urlwithroot.'/viewimage.php', $msg, -1);
if (!empty($conf->global->MAIN_MAIL_FORCE_CONTENT_TYPE_TO_HTML)) $this->msgishtml = 1; // To force to send everything with content type html.
@ -349,6 +349,9 @@ class CMailFile
$msg = $this->checkIfHTML($msg);
}
// Replace . alone on a new line with .. to avoid to have SMTP interpret this as end of message
$msg = preg_replace('/(\r|\n)\.(\r|\n)/ims', '\1..\2', $msg);
if ($this->msgishtml) $smtps->setBodyContent($msg, 'html');
else $smtps->setBodyContent($msg, 'plain');