Rechnungsmodul: BCC-Empfänger mit SMTP-Server

#1
Im Rechnungsmodul wird eine neue E-Mail Nachricht versandt.

Wenn in der Systemkonfiguration ein SMTP-Server aktiviert ist, wird der BCC-Empfänger (aus den Einstellungen der Firma) im Klartext in den Header des TO-Empfängers geschrieben, aber nichts an diesen versandt:

Code:
Subject: xxx
To: mail1@domain.tld
Bcc: mail2@domain.tld
Mime-Version: 1.0
Ohne SMTP-Server funktioniert alles wie erwartet. Die Nachricht geht auch an den BCC-Empfänger.
 

Till

Administrator
#3
Muss ich mir ansehen. Das Billingmodul ist nur mit der releasten Version 3.0.5.3 getestet, nicht mit dem dev code des stable branch. Da wird wahrscheinlich ein fehler in der smtp klasse im stable branch vorliegen.
 
#4
Da wird wahrscheinlich ein fehler in der smtp klasse im stable branch vorliegen.
Dann müsste das eigentlich auch andere Benachrichtigungen berühren, nicht nur im Billingmodul.

Das letzte Update diesbezüglich (Commit: ecce33ad9bd82f4a0b36924f7e1b90e11ae3a08b) an der Datei interface/lib/classes/ispcmail.inc.php (Update: SMTP mail class) war vor über einem Jahr, also eigentlich vor dem Release 3.0.5.3
 

Till

Administrator
#5
Das letzte Update diesbezüglich (Commit: ecce33ad9bd82f4a0b36924f7e1b90e11ae3a08b) an der Datei interface/lib/classes/ispcmail.inc.php (Update: SMTP mail class) war vor über einem Jahr, also eigentlich vor dem Release 3.0.5.3
Das letzte Update war vor 10 Tagen und die BCC Funktionen werden von keiner anderen Benachrichtigungsfunktion in ISPConfig verwendet.

Das letzte Update diesbezüglich (Commit: ecce33ad9bd82f4a0b36924f7e1b90e11ae3a08b) an der Datei interface/lib/classes/ispcmail.inc.php (Update: SMTP mail class) war vor über einem Jahr, also eigentlich vor dem Release 3.0.5.3

ISPConfig / ISPConfig 3 | GitLab
 
#6
Das letzte Update war vor 10 Tagen und die BCC Funktionen werden von keiner anderen Benachrichtigungsfunktion in ISPConfig verwendet.
Ich habe die Commits nach Relevanz betrachtet, und das letzte Update vor 10 Tagen schien mir dafür nicht verantwortlich. Der von mir erwähnte Commit eventuell aber schon:

PHP:
        if($this->use_smtp == true) $this->_crlf = "\r\n";
 	496
        else $this->_crlf = "\n";
 	497
 
#7
Ich werde das mal mit der releasten Version 3.0.5.3 testen. Allerdings würde das kurz vor Veröffentlichung stehende Release 3.0.5.4 dann auch nicht funktionieren.
 

Till

Administrator
#8
Es sind da diverse commits in der Zwischenzeit rein gekommen in die Datei. Ich werde mir das ansehen und habe es ja auch im ispconfig Bugtracker eingefügt, denn auch wenn das problem im billingmodul auftritt handelt es sich um einen fehler im emailmodul von ispconfig. daher steht der bug auch im ispconfig und nicht billing bugtracker.
 
#13
Lösung

Bei der Übergabe an die ispcmail Klasse müssen beim Versand per SMTP a) die BCC-Empfänger aus dem Header entfernt werden und b) sämtliche Empfänger (einschließlich BCC) als Array übergeben werden. Hier der Diff:

PHP:
diff --git a/interface/lib/classes/functions.inc.php b/interface/lib/classes/functions.inc.php
index d2ac583..c0a2fa3 100644
--- a/interface/lib/classes/functions.inc.php
+++ b/interface/lib/classes/functions.inc.php
@@ -56,9 +56,18 @@
 		}
 
 		if($cc != '') $app->ispcmail->setHeader('Cc', $cc);
-		if($bcc != '') $app->ispcmail->setHeader('Bcc', $bcc);
+		
+		if($mail_config['smtp_enabled'] == 'y') {
+			$recipients[] = $to;
+			if($cc  != '') $recipients[] = $cc;
+			if($bcc != '') $recipients[] = $bcc;
+			$app->ispcmail->send($recipients);
+		}
+		else {
+			if($bcc != '') $app->ispcmail->setHeader('Bcc', $bcc);
+			$app->ispcmail->send($to);
+		}
 
-		$app->ispcmail->send($to);
 		$app->ispcmail->finish();
 
 		/* left in here just for the case...
Allerdings bisher nur für den aktuellen Fall geprüft und keine anderen Anhängigkeiten berücksichtigt.
 
#15
Der Bugreport ist zwar bereits geschlossen, der Fehler existiert aber immer noch:

Die Nachricht kommt jetzt auch beim BCC-Empfänger an, allerdings ist dieser nach wie vor als Klartext im Header enthalten.

BTW Warum wird hierfür eigentlich keine fertige Klasse wie Swiftmailer oder PHPMailer verwendet?
 

Croydon

Super-Moderator
#20
Kann ich nicht bestätigen.
Bei mir klappt es mit smtp_crypt = 'ssl' und smtp_port = '465' sowie smtp_crypt = 'tls' und smtp_port = '25' problemlos.
 

Werbung

Top