Beiträge von Arne Drews
-
-
Zur Frage: Im Mailing-Skript einfach auch session_start(); verwenden und Du hast Zugriff auf die Session-Variablen.
Nur mal als Anregung: Bevor ich mit IF-Ketten arbeite, nutze ich bspw. die Array-Funktionen von PHP:
PHP$languages = array_filter([ 'de', $_GET['language'] ?? null, $_SESSION['language'] ?? null ]); $_SESSION['language'] = end( $languages ); include_once '_include/lang/' . $_SESSION['language'] . '.php';
Bei mir habe ich noch eine Routine drin, die anhand des User-Agent die primäre Sprache versucht herauszufinden. Das Ergebnis packe ich mit in das array_filter().
Hinterher habe ich in $languages nur gültige Werte und übernehme den letzten Eintrag in die Session. Das setzt natürlich voraus, dass die Elemente im array_filter() nach Prio aufsteigend sortiert sind, damit der letzte die höchste hat.EDIT: Korrigiert von array_map() auf array_filter()
-
Das ist dann in der Tat merkwürdig, aber imho kein grundsätzlicher Bug von Thunderbird, denn bei mir macht er das einwandfrei in allen Postfächern.
Aber wie Du schon sagtest, wenn das alles ist, kann man vermutlich damit leben. -
Lies Dich mal in das Flexmodell ein, dann ist responsive nicht mehr weit weg.
-
-
Ne, also ich meine den Junkfilter. Wenn ich den in den Postfach-Einstellungen aktiviere und sage "Verschiebe eingehenden JUNK in Zielordner" macht er das auch.
Oder meinst Du was anderes? -
Junk werden bei mir automatisch gelöscht, wenn ich den Filter aktiv habe...
-
Schade: https://www.html-seminar.de/forum/thread/7…r%C3%B6%C3%9Fe/
CrossPost sind nicht erwünscht
[MOD: geschlossen] -
Zitat
Status 1 sollte positiv sein!?
Das denke ich mir, dass du das so meinst, aber Du machst es genau umgekehrt:
PHP
Alles anzeigenif( !$oMailer->send() ) { // <-- stumpf kopiert oder auch mal Gedanken gemacht, was das für Auswirkungen haben könnte??? $this->response_status =1; $this->response_html ='<p>Weg!</p>'; exit; } else { $this->response_html .='<p>Nix weg!</p>'; $this->response_status =0; }
Was meinst Du denn, was da passiert?! -
Was auch immer Fehler Email 2 bedeuten soll, das musst Du ja wissen...
Da Status 0 ist, ist vermutlich der Versand erfolgreich. -
Zitat
Kann sogar unmittelbar nach <?php ein echo reinhämmern, bekomme es dennoch nicht zu sehen...
Dann stimmt etwas mit Deiner Server-Konfiguration nicht!
-
Dann führe den Code blockweise aus und setze Testausgaben, fang bspw. damit an:
PHP
Alles anzeigenerror_reporting ( -1 ); ini_set ( 'display_errors', true ); //PHPmailer v6 Setup use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require__DIR__.'/_include/php/phpmailer/src/Exception.php'; require__DIR__.'/_include/php/phpmailer/src/PHPMailer.php'; require__DIR__.'/_include/php/phpmailer/src/SMTP.php'; //PHPmailer v6 Instanz $oMailer = new PHPMailer; $oMailer->CharSet ='UTF-8'; require_once ( __DIR__ . '/../_include/php/db_connect.php' ); $statement = $db->query( 'SELECT mail_contact FROM settings' ); $admin_email = $statement->fetch()['mail_contact']; $message_min_length = 5; // Testausgabe echo $message_min_length;
Gibt er ohne Fehler 5 aus, ist bis dahin vermutlich alles ok.
Passiert hier schon nichts, hast Du bereits in dem Block Fehler... -
Du hast den Code selber wieder angepasst... Ich habe keine Lust, in jedem Beitrag den kompletten Code wieder zu überprüfen.
Nimm den korrigierten Code aus #14, kopiere den 1:1 und gebe Feedback, welche Fehler dann kommen. Dann kann man das Step by Step angehen.
Wenn Du jedesmal wieder selber was reinfriemelst, finden wir nie heraus, wo die Fehler genau liegen -
Na zumindest kommen jetzt Fehler!
Ich hatte den Code vorhin nochmal überarbeitet. Musst Du nochmal versuchen.ZitatJa die 'kleinen' Fehler hätte ich noch rausgeschmirgelt...
Sag mal, nimmst Du uns auf den Arm?!
Erstens sind das keine kleinen Fehler! und zweitens können auch die dazu führen, dass nichts geht! Wenn Du so arbeitest, ist jede Hilfe verschwendete Zeit... -
Ne hält es nicht... Je nach PHP Version ist E_ALL nicht dasselbe, wie -1. Nur -1 ist in allen PHP-Versionen konstant und liefert wirklich ALLE Fehler!
Davon mal abgesehen, hat die Konstante E_ALL einen Wert von 32767, was ini_set() veranlasst dies in ein true zu casten.Versuch diesen Code mal:
PHP
Alles anzeigenerror_reporting ( -1 ); ini_set ( 'display_errors', true ); //PHPmailer v6 Setup use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require__DIR__.'/_include/php/phpmailer/src/Exception.php'; require__DIR__.'/_include/php/phpmailer/src/PHPMailer.php'; require__DIR__.'/_include/php/phpmailer/src/SMTP.php'; //PHPmailer v6 Instanz $oMailer =new PHPMailer; $oMailer->CharSet ='UTF-8'; require_once ( __DIR__ . '/../_include/php/db_connect.php' ); $statement = $db->query( 'SELECT mail_contact FROM settings' ); $admin_email = $statement->fetch()['mail_contact']; $message_min_length = 5; class Contact_Form { public function __construct( $details, $admin_email, $message_min_length ) { $this->name =stripslashes($details['name']); $this->email =trim($details['email']); $this->subject ='Blechlavine.com - Kontaktnachricht eingegangen'; $this->message =stripslashes($details['message']); $this->admin_email = $admin_email; $this->message_min_length = $message_min_length; $this->response_status =1; $this->response_html =''; } private function validateEmail() { $regex ='/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i'; if ( $this->email =='' ) return false; $string = preg_replace( $regex, '', $this->email ); return empty( $string ); } private function validateFields() { // Check name if( !$this->name ) { $this->response_html .= '<p>' . $lang['contact_errorname'] . '</p>'; $this->response_status = 0; } // Check email if( !$this->email ) { $this->response_html .= '<p>' . $lang['contact_erroremail'] . '</p>'; $this->response_status = 0; } // Check valid email if( $this->email && !$this->validateEmail() ) { $this->response_html .= '<p>' . $lang['contact_erroremail2'] . '</p>'; $this->response_status = 0; } // Check message length if( !$this->message || strlen($this->message) < $this->message_min_length ) { $this->response_html .= '<p>' . $lang['contact_errormessage'] . '</p>'; $this->response_status = 0; } } private function sendEmail() { // SMTP aktivieren $oMailer->isSMTP(); // SMTP-Server $oMailer->Host ='smtp.strato.de'; // SMTP Authentifizierung aktivieren $oMailer->SMTPAuth =true; // SMTP Benutzer $oMailer->Username = $this->admin_email; // SMTP Benutzer Passwort $oMailer->Password = 'xxxxxxxx'; // Verbindungssicherheit setzen ( SSL und TLS möglich ) $oMailer->SMTPSecure = 'ssl'; // Verbindungsport festlegen $oMailer->Port = 465; // Absender Adresse setzen $oMailer->From = $this->email; // Absender Alias setzen $oMailer->FromName = $this->name; // Empfänger Adresse und Alias hinzufügen $oMailer->addAddress( $this->admin_email, 'Webmaster Blechlavine' ); // HTML aktivieren $oMailer->isHTML(true); // Betreff $oMailer->Subject ='Blechlavine.com - Nachricht eingegangen'; // Der Nachrichteninhalt als HTML $oMailer->Body = $this->message; // Alternativer Nachrichteninhalt für Clients, die kein HTML darstellen $oMailer->AltBody = strip_tags( $oMailer->Body ); //PHPmailer v6 Versand prüfen if( !$oMailer->send() ) { $this->response_status = 1; $this->response_html ='<p>'.$lang['contact_success'].'</p>'; exit; } else { $this->response_html .='<p>'.$lang['contact_erroremail'].'</p>'; $this->response_status = 0; } } public function sendRequest() { $this->validateFields(); if( $this->response_status ) $this->sendEmail(); $response = array(); $response['status'] = $this->response_status; $response['html'] = $this->response_html; echo json_encode($response); } }
PHP$contact_form = new Contact_Form($_POST, $admin_email, $message_min_length); $contact_form->sendRequest();
EDIT: Zudem vermute ich, dass die E-Mail Adresse hiernach immer leer sein wird:
Weiterhin ist sowas unnötig ( und zudem noch falsch ):
das ist das gleiche, wie das hier:, außer, dass Du den Interpreter mehr forderst, weil er versucht eine Zeichenkette zu parsen, die gar nicht da ist.
EDIT2: Ich habe den Code oben nochmal etwas korrigiert. Teste und poste evtl. Fehler
-
Also wenn da keine Fehler angezeigt werden, gibt es nur zwei Möglichkeiten:
- Du hast das ErrorReporting nicht korrekt eingesetzt
- Dein Server ist kaputt
-
Setz mal ganz an den Anfang das ErrorReporting ein:
Dann sollten auch Fehler kommen, bspw. gibt es kein...obwohl, ich sehe gerade, das ist im JS-Block. Die Fehler findest Du in der Entwickler-Konsole Deines Browsers (F12)
-
-
Ja nun... Wenn man es richtig machen will. darf man so ein Schwein nicht frei rumlaufen lassen...
Wenn Du die Zeit nicht hast, es richtig zu machen, solltest Du aber hier auch nicht fragen, ob Dir jemand hilft.Du musst beim Versenden von E-Mails so vieles bedenken, was in dem Script einfach nicht beachtet wird.
All diese Dinge übernehmen Mailerklassen für Dich. Ich schenk Dir mal zwei Links: PHPMailer ( und ein funktionierendes Tutorial ).Feel free to learn...
btw., ich will ja nichts böses unterstellen, aber ich könnte mir vorstellen, dass sich hinter der DB-Klasse die mysql-Erweiterung verbirgt, das wäre dann auch was für Auswechselbank.
-
Ich kann mir schon vorstellen von welcher Seite das ist, das ist nicht gut...
Du solltest kein mail() verwenden, sondern eine Mailer-Klasse, wie bspw. PHPMailer.