Probleme mit Mails weiterleiten

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Probleme mit Mails weiterleiten

    Hallo!

    Mein Name ist Dennis, ich bin ein Neuer hier. Auf das Forum bin ich durch die wirklich gute Seite "peterkropff.de" gestoßen, auf der ich mir vieles über PHP anlesen konnte. Vielen Dank an dieser Stelle für diese wirklich klasse Seite, hat mir sehr oft schon geholfen. Bei meinem aktuellen Problem kann mir nur die Seite leider nicht weiter helfen, deswegen jetzt hier als neuer Thread.

    Zu meinem Vorhaben:
    Nehmen wir an, es gibt einen Verein, bei dem öfters Mitglieder dazukommen, und andere wieder verschwinden. Zusätzlich gibt es eine Reihe von Freunden des Vereins. Nehmen wir weiter an, der Vorstand möchte öfters eine Mail an alle Mitglieder verschicken, oder auch mal an die Mitglieder und Freunde. Allerdings ist nicht jeder vom Vorstand auf dem aktuellen Stand der Mitglieder und Freunde, es werden also ab und zu einzelne vergessen. Jetzt war meine Idee, zwei Mail-Adressen auf der Vereins-Domain zu registrieren, Freunde@verein.de und Mitglieder@verein.de. Diese Postfächer möchte ich mit php auslesen und dann einfach an eine Reihe von Mail-Adressen schicken, die ich in einer Datenbank mittels einer Admin-Seite einpflegen kann.

    So lange es nur um reine Text-Mails geht, ist das kein Problem, da habe ich funktionierenden Code. Der Einfachheit halber habe ich den Part mit den Mail-Adressen aus der Datenbank holen, weggelassen. Der Code läuft bei mir.

    PHP-Code:
    <?php

    $imap_server 
    "server.vollhorst.de";
    $imap_benutzer "nutzer";
    $imap_passwort "lalelu";

    $mail "Voll@Horst.net";



    $imap imap_open("{" $imap_server ":143}INBOX"$imap_benutzer$imap_passwort);     //Imap Verbindung herstellen

    $anzahl imap_num_msg($imap);                                                            //wieviele Nachrichten

    if ($anzahl != 0) {

        for (
    $i 0$i $anzahl$i++) {
            
            
    $struktur imap_fetchstructure($imap$i+1);
            
    $imap_header imap_header($imap$i 1);
            
            if(!
    $struktur->parts){          //einfach nur Text
                
                
    $send_header "From: " $imap_header->from[0]->mailbox "@" $imap_header->from[0]->host;
                
    $send_body imap_body($imap$i 1);
                
            }
            else {

                
    //hier wird es schwierig
            
    }
            
            
    mail($mail$imap_header->subject$send_body$send_header);
            
            
    imap_delete($imap$i+1);                                                         //gesendete Mail zum löschen markieren
        
    }
        
    imap_expunge($imap);                                                                 //zum löschen markierte Nachrichten wirklich löschen
    }    

    imap_close($imap);

    ?>
    Jetzt kommt es aber öfter vor, das der Vorstand auch mal ein Protokoll einer Sitzung verschicken will, in Form eines PDF. Oder es gibt neue Oben-Ohne Bilder von der Hübschen 25-jährigen von der letzten Vereins-Feier. Soll heißen, ich kenne den Datentyp des Anhangs nicht. Und dort habe ich jetzt meine Probleme. Soweit ich weis, kann ich nicht einfach den Header, den die gesendete Mail hat, für meine neue Mail einfach weiter verwenden. Mit dem Body sollte es ja aber funktionieren, oder irre ich mich da? Und wie erstelle ich jetzt einen vernünftigen neuen Header? Am meisten Probleme macht mir die Art des Datei-Anhangs, ob es nun application/PDF oder imagine/jpg oder noch was anderes ist. Das bekomme ich irgendwie mit keiner Funktion in PHP aus der gesendeten Mail heraus.

    Ich möchte jetzt keinen völlig fertigen Code haben, den ich einfach kopieren muss, mir würde es reichen, wenn ich die Vorgehensweise kenne. Was muss ich zuerst rausfinden, um das nächste zu wissen, damit ich zum Schluss eine neue Mail verschicken kann und keiner mitbekommt, dass da überhaupt ein kleines Script von mir dazwischen gearbeitet hat.


    Ich bedanke mich schon mal im Voraus für Antworten und ich hoffe, alle wesentlichen Informationen gebracht zu haben. Falls nicht, versuche ich gern, nachzubessern.


    Dennis

  • #2
    Willkommen im Forum.

    Im Zweifel ist es bei so was immer eine gute Idee, auf fertige Komponenten zu setzen, weil es schwierig ist, alle potenziell relevanten Details und Spezialfälle schnell mal eben selbst korrekt zu implementieren.

    Ich habe so was noch nicht gemacht, aber ich würde es mal mit einer Kombination aus Fetch und SwiftMailer (oder PHPMailer) versuchen.

    - https://github.com/tedious/Fetch
    - Powerful component based mailing library for PHP – Swift Mailer

    (Gefunden per: https://github.com/ziadoz/awesome-php)

    PS: Als Beispiel-Domains bitte example.org, example.com, example.net verwenden. Die sind dafür vorgesehen. http://www.iana.org/domains/reserved

    Kommentar


    • #3
      Also ich habe es hin bekommen. Da ich ja bei einer mail nichts auslesen will kann der body der mail genau so bleiben, wie er ist, es sei denn, eine einfache text-mail ist mit quoted-printable encodiert, aber da gibt es ja eine kleine nette funktion in php das zu decodieren. Ansonsten muss ich eben den header neu erstellen. Wenn es eine einfache text-mail ist, reicht es, wenn ich das charset heraus finde um es in den neuen header einzufügen. Bei multipart-mails muss ich den richtigen boundary einfügen. Ich habe es mehrere Tage ausprobiert von mehreren mail-programmen die mir zur Verfügung stehen, bis jetzt keine Fehler entdeckt.


      Dennis

      Kommentar

      Lädt...
      X