Rechnungsmodul: BCC-Empfänger mit SMTP-Server

Dieses Thema im Forum "Installation und Konfiguration" wurde erstellt von ramsys, 31. Jan. 2014.

  1. ramsys

    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.
     
  2. ramsys

    ramsys Member

    Nachtrag:

    ISPConfig: stable-3.0.5
    Modul Billing: REV-10
     
  3. Till

    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.
     
  4. ramsys

    ramsys Member

    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
     
  5. Till

    Till Administrator

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

    ramsys Member

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

    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.
     
  8. Till

    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.
     
  9. Till

    Till Administrator

    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?
     
  10. ramsys

    ramsys Member

    Weil zum Zeitpunkt meines Postings noch kein Eintrag im Bugtracker war :) Das hat sich also irgendwie gerade überschnitten ;)
     
  11. Till

    Till Administrator

  12. ramsys

    ramsys Member

    Ja, habe ich zwischenzeitlich auch gefunden :)
     
  13. ramsys

    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,+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.
     
  14. Till

    Till Administrator

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

    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?
     
  16. ramsys

    ramsys Member

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

    ramsys Member

    Was aber noch nicht funktioniert:

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

    Croydon Super-Moderator

    Selbst signiertes Zertifikat oder offizielles?
     
  19. ramsys

    ramsys Member

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

    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.
     

Diese Seite empfehlen