Rechnungsmodul: BCC-Empfänger mit SMTP-Server

ramsys

Member
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
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.
 

ramsys

Member
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
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
 

ramsys

Member
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
 

ramsys

Member
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
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.
 

ramsys

Member
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.
 

ramsys

Member
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?
 

ramsys

Member
Rückmeldung: Funktioniert jetzt (Commit 101ed23c5c5d502d3acc1d9075e1492b2229dd84) wunderbar. Vielen Dank auch an Marius Cramer ;)
 

ramsys

Member
Was aber noch nicht funktioniert:

Der Versand per SMTP mit einer SSL/TLS verschlüsselten Verbindung (Port 465).
 

Croydon

Super-Moderator
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
Unsere Website wird durch die Anzeige von Online-Werbung für unsere Besucher ermöglicht.
Bitte ziehe es in Betracht, uns zu unterstützen, indem du deinen Werbeblocker deaktivierst.