# Rechnungsmodul: BCC-Empfänger mit SMTP-Server



## ramsys (31. Jan. 2014)

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:


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


----------



## ramsys (31. Jan. 2014)

Nachtrag:

ISPConfig: stable-3.0.5
Modul Billing: REV-10


----------



## Till (31. Jan. 2014)

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 (31. Jan. 2014)

Zitat von Till:


> 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 (1. Feb. 2014)

> 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 (1. Feb. 2014)

Zitat von Till:


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


```
if($this->use_smtp == true) $this->_crlf = "\r\n";
 	496
        else $this->_crlf = "\n";
 	497
```


----------



## ramsys (1. Feb. 2014)

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 (1. Feb. 2014)

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.


----------



## Till (1. Feb. 2014)

> Allerdings würde das kurz vor Veröffentlichung stehende Release 3.0.5.4 dann auch nicht funktionieren.


Kann ich nicht nachvollziehen. Alle Bugs im ispconfig bugtracker die nicht geschlossen sind werden wie üblich vor dem release gecheckt. Wieso gehts Du davon aus dass gerade dieser Bug vergessen werden sollte, wenn er doch im Bugtracker steht?


----------



## ramsys (1. Feb. 2014)

Zitat von Till:


> Wieso gehts Du davon aus dass gerade dieser Bug vergessen werden sollte, wenn er doch im Bugtracker steht?


Weil zum Zeitpunkt meines Postings noch kein Eintrag im Bugtracker war  Das hat sich also irgendwie gerade überschnitten


----------



## Till (1. Feb. 2014)

Hier der Eintrag im Bugtracker von gestern:

FS#3318 : Check if there is a problem with bcc email addresses in email class


----------



## ramsys (1. Feb. 2014)

Zitat von Till:


> Hier der Eintrag im Bugtracker von gestern:


Ja, habe ich zwischenzeitlich auch gefunden


----------



## ramsys (3. Feb. 2014)

*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:


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


----------



## Till (4. Feb. 2014)

Danke! Ich hänge den Post mal an den bugreport im ispconfig bugtracker an.


----------



## ramsys (6. Feb. 2014)

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 (8. Feb. 2014)

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


----------



## ramsys (8. Feb. 2014)

Was aber noch nicht funktioniert:

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


----------



## Croydon (10. Feb. 2014)

Selbst signiertes Zertifikat oder offizielles?


----------



## ramsys (10. Feb. 2014)

Zitat von Croydon:


> Selbst signiertes Zertifikat oder offizielles?


Im getesteten Fall der Mailserver des Providers mit gültigem Zertifikat, funktioniert ansonsten einwandfrei. Also sslsmtp.provider.com Port 465.


----------



## Croydon (10. Feb. 2014)

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.


----------



## Croydon (10. Feb. 2014)

Ok, jetzt hab ich den Fehler  Korrigieren wir. Liegt aber nicht an der Mailklasse.


----------



## ramsys (10. Feb. 2014)

Zitat von Croydon:


> Ok, jetzt hab ich den Fehler


Ich war schon grad am selbstzweifeln 



Zitat von Croydon:


> Korrigieren wir.


Danke, werde ich testen sobald im Git verfügbar und hier berichten.


----------



## Croydon (10. Feb. 2014)

Ist nun im Git.


----------



## ramsys (10. Feb. 2014)

Zitat von Croydon:


> Ist nun im Git.


Ja, habe ich gerade schon gesehen. Danke! 

Ich werde mir nachher mal die Version 3.0.5.4dev installieren.


----------



## ramsys (11. Feb. 2014)

Okay, funktioniert nun einwandfrei.


----------



## ramsys (1. März 2014)

*Kodierung von Umlauten im Header*

Ich poste das mal hier in diesen Thread:

Beim Versand der automatischen Benachrichtigungen an den Kunden (mail_quota_notification_de.txt, web_quota_notification_de.txt usw.) werden die Umlaute z.B. im Betreff nicht kodiert:


```
X-Amavis-Alert: BAD HEADER SECTION, Non-encoded 8-bit data
```
In das Entwicklerforum verschieben?


----------



## Till (2. März 2014)

Bugs bitte im bugtracker posten. Im forum gepostete bugs gehen nicht in den dev workflow ein da nicht alle entwickler hier mitlesen. Das entwickler forum ist der richtige ort wenn du fragen zur ispconfig programmierung hast, bugs gehören da auch nicht rein, denn dafür gibt es den bugtracker unter ISPConfig::ISPConfig 3: Tasklist

Danke!


----------

