Ankündigung

Einklappen
Keine Ankündigung bisher.

Viele Fragen rund um das Thema 'Mail'

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

    #31
    Zitat von CADS11 Beitrag anzeigen
    Ich habe keine Idee mehr, was ich noch machen könnte.
    Hallo CADS11!

    Ich weiß aus eigener Erfahrung, wie mühsam und frustrierend das erfolglose Herumspielen mit PHPMailer ist. Deshalb, und auch weil ich es selbst wieder mal durchspielen wollte, habe ich mich gestern nochmals 3 Stunden hingesetzt und gebe Dir hier nun eine Anleitung von Punkt Null weg, so wie ich es gemacht habe … so dass es auch bei Dir funktionieren sollte:

    1.) Du machst Dir zum Testen einen neuen Ordner auf Deinem Webspace, ich habe ihn als "mailtest" benannt. In diesem Ordner legst Du ein weiteres Verzeichnis an, in dem dann die PHPMailer Ressourcen liegen werden. Ich habe das Verzeichnis als "inc_files" benannt.

    2.) Du gehst auf https://github.com/PHPMailer/PHPMailer und suchst Dir dort im oberen Drittel den mitten im Text stehenden Link "download PHPMailer as a zip file" und ladest Dir die aktuelle Version runter. Entpacke die Datei und platziere die 6 Ressourcen aus dem Ordner "src" (Exception.php, OAuthTokenProvider.php, OAuth.php, PHPMailer.php, POP3.php und SMTP.php) in das zuvor erstellte Verzeichnis "inc_files".

    3.) Du erstellst im Kundenmenü eine neue Mailadresse für Deine Domain example.org. Wir nehmen jetzt an, Dein Name ist Max Mustermann, die neue Mailadresse ist [email protected] example.org und das Passwort, das Du eingerichtet hast dazu, lautet "meinpasswort".

    3.) Nun erstellst Du eine PHP Ressource, die Mails verschicken soll. Ich habe sie "mail.php" benannt. Die speicherst Du im Verzeichnis "mailtest".
    PHP-Code:
    <?php

    // Initialisierung:
    declare(strict_types 1);
    header('content-type:text/html; charset=UTF-8');
    error_reporting(E_ALL|E_STRICT);
    mb_internal_encoding('UTF-8');
    date_default_timezone_set('Europe/Vienna');

    // Namespace der Klassen Exception, PHPMailer und SMTP:
    use PHPMailer\PHPMailer\Exception;
    use 
    PHPMailer\PHPMailer\PHPMailer;
    use 
    PHPMailer\PHPMailer\SMTP;

    // Einbindung der PHPMailer Ressourcen:
    require 'inc_files/Exception.php';
    require 
    'inc_files/OAuthTokenProvider.php'// Diese Zeile muss vor der nächsten stehen, damit OAuth.php keinen Fehler verrsacht!!!
    require 'inc_files/OAuth.php';
    require 
    'inc_files/PHPMailer.php';
    require 
    'inc_files/SMTP.php';

    // Konfigurationswerte: (Sollte idealerweise natürlich ausgelagert sein!)
    $S_user                 '[email protected] example.org';
    $S_password             'meinpasswort';
    $S_absenderName         'Max Mustermann ~ Mailsystem';
    $S_absenderMailadresse  '[email protected] example.org';

    // Meine Funktion zum Senden von Mails:
    function senden(array $A_mail): string
       
    {
          global 
    $S_user; global $S_password; global $S_absenderName; global $S_absenderMailadresse;
          
    $S_senderName $S_absenderName;
          
    $S_senderAddress $S_absenderMailadresse;
          
    $S_recipientName $A_mail['S_recipientName'];
          
    $S_recipientAddress $A_mail['S_recipientAddress'];
          
    $S_type $A_mail['S_type'] ?? 'TXT';
          
    $B_html = ($S_type === 'HTML') ? TRUE FALSE;
          
    $S_subject $A_mail['S_subject'];
          
    $S_body $A_mail['S_body'];
          
    $O_mail = new PHPMailer;
          
    $O_mail -> isSMTP();
          
    $O_mail -> SMTPDebug 2// 0 = OFF (Für on air Umgebung), 1 = Client Messages, 2 = Client und Server Messages
          
    $O_mail -> Host "ssl://sslout.df.eu";
          
    $O_mail -> Port 465;
          
    $O_mail -> CharSet 'UTF-8';
          
    $O_mail -> setFrom($S_senderAddress$S_senderName);
          
    $O_mail -> addAddress($S_recipientAddress$S_recipientName);
          
    $O_mail -> Subject $S_subject;
          
    $O_mail -> Body $S_body;
          if(
    $B_html)
             {
                
    $O_mail -> isHTML();
             }
          
    $O_mail -> SMTPSecure "TLS";
          
    $O_mail -> SMTPAuth TRUE;
          
    $O_mail -> Username $S_user;
          
    $O_mail -> Password $S_password;
          
    $S_msg = ($O_mail -> send()) ? 'Mail wurde gesendet!' 'Mail wurde nicht gesendet!';
          return 
    $S_msg;
       }

    // Mail senden:
    $A_mail['S_recipientName']    = 'Berta Musterfrau';
    $A_mail['S_recipientAddress'] = '[email protected]';
    $A_mail['S_subject']          = 'Testmail: Können Kühe nähen?';
    $A_mail['S_body']             = 'Das ist eine Testmail.';

    $S_senden senden($A_mail);

    // Erfolgsausgabe:
    echo $S_senden;

    ?>

    4.) Und wenn Du jetzt die Angaben mit Deinen Daten ersetzt, sollte beim Aufruf von example.org/mailtest/mail.php problemlos eine Mail versendet werden. Du kannst meine Funktion natürlich noch erweitern, um zB. mit $O_mail -> AddAttachment($attachement); Anhänge mitzuversenden. Ich hoffe, das war eine Hilfe, gib doch Feedback!

    Liebe Grüße

    Der Brombeermilchtrinker

    Kommentar


      #32
      Hallo Brombeermilchtrinker,
      ich habe die letzten Tage auch rumprobiert.
      Schritt für Schritt ging es nun vorwärts.
      Nun habe ich es geschafft. Meine Mails werden versandt.
      Ich danke dir für deine Hilfe und die Programmteile.
      Wie du schon geschrieben hast, ist es sehr mühsam, wenn man sein Programm startet und bekommt gar keine Ausgabe mehr.
      Aber jetzt funktioniert es.
      Besten Dank für deine Mühe.

      Viele Grüße

      CADS11

      Kommentar


        #33
        Hallo Brombeermilchtrinker,

        vielen Dank auch von meiner/unserer Seite. Ich hatte mit der gleichen Problematik auch vor einigen Wochen meinen Spaß. Skripttechnisch kam ich zu einem ähnlichen Ergebnis wie Sie mit weniger genutzten Möglichkeiten. Hier als Alternative:
        PHP-Code:
        <?php
        $debug 
        true// or
        $debug false;

        use 
        PHPMailer\PHPMailer\PHPMailer;
        use 
        PHPMailer\PHPMailer\Exception;
        use 
        PHPMailer\PHPMailer\SMTP;
        require 
        'PHPMailer/src/Exception.php';
        require 
        'PHPMailer/src/PHPMailer.php';
        require 
        'PHPMailer/src/SMTP.php';


        try {
        $mail = new PHPMailer($debug);

         if (
        $debug) {
                        
        // gibt einen ausführlichen log aus
                        
        $mail->SMTPDebug SMTP::DEBUG_SERVER
                }

                
        // authentifiziere dich über den smtp-login
                
        $mail->isSMTP();
                
        $mail->SMTPAuth true;
         


        $mail->setFrom('[email protected]''xyz Absender');
        $mail->addAddress('[email protected]''xyz Empfänger');


        $htmltext='HTML formatierter Quelltext';

        $mail->isHTML(true);
                
        $mail->Subject "Das ist der Betreff";
                
        $mail->Body    $htmltext;
                
        // $mail->AltBody = "Text";

         
        /* SMTP parameters. */
        $mail->Host 'sslout.df.eu';
        $mail->SMTPSecure PHPMailer::ENCRYPTION_STARTTLS;
        $mail->SMTPSecure PHPMailer::ENCRYPTION_SMTPS;
        $mail->SMTPOptions = array(
                    
        'ssl' => array(
                          
        'verify_peer' => false,
                          
        'verify_peer_name' => false,
                          
        'allow_self_signed' => true
                    
        ),
                    
        'tls' => array(
                        
        'verify_peer' => false,
                        
        'verify_peer_name' => false,
                        
        'allow_self_signed' => true
                    
        )
                );
        $mail->Username '[email protected]';
        $mail->Password '12345678Passwort';
        $mail->Port 465;
         
        //Anhänge
        //$mail->addAttachment("Dateiname.pdf", "Name_in_Mail.pdf"); //Liegt in dem Fall im Verzeichnis des Skripts hier


        //Senden der E-Mail
        $mail->send();

        } catch (
        PHPMailer\PHPMailer\Exception $e) {
            echo 
        "Message could not be sent. Mailer Error: ".$mail->ErrorInfo
        }
        Mit freundlichen Grüßen

        Nils Dornblut
        Blog - Facebook - Twitter
        Communitybetreiber: domainfactory GmbH
        Impressum / Pflichtangaben

        Kommentar

        Lädt...
        X