Du hast ja Recht, aber der Provider, den ich angeschrieben habe, hat geantwortet, in diesem Fall ginge es nicht, ich brauchte sendmail. Nun ist es auch ok mit utf8, aber kein anklickbarer Link mehr und kein Sendedatum, was vorher da war. Ich bin leider noch nicht gut genug
UTF 8 Problem mit E-Mail
-
-
Ich möchte ja gerne dazulernen, wenn Du eine Idee hast was ich machen kann würde ich mich natürlich freuen. Einbinden von PHP-mailer nützt nichts wie bei dem Kontakt-Formular und der Bestätigungsmail für Dateiupload
-
Einbinden von PHP-mailer nützt nichts wie bei dem Kontakt-Formular und der Bestätigungsmail für Dateiupload
Das ist doch Quatsch! Wenn es beim Kontakt-Formular und der Bestätigungsmail funktioniert, dann gibt es keinen Grund, warum es in diesem Fall nicht gehen soll. Und dein Provider scheint auch NULL Ahnung zu haben! Mit dem phpMailer kann man immer per SMTP versenden, wenn man einen Mail-Account hat. Und wenn nicht, der phpMailer kann auch per sendmail versenden.
-
Wenn Du Dir die Mühe machen möchtest mir da zu helfen würde ich mich wirklich freuen. Vielleicht muss ich class.phpmailer was ändern? Hab dort schon Iso-8859-1 auf utf-8 geändert, aber dann wurden andere Texte falsch angezeigt
-
Vielleicht muss ich class.phpmailer was ändern?
Auf keinen Fall! Die Dateien vom phpMailer sollest du nicht verändern. Alle möglichen Einstellungen kann man von außen steuern und nicht in den phpMailer-Dateien.
Du kannst dir doch den Mail-Teil vom Kontaktformular rausziehen und dann entsprechend für diesen Fall anpassen.
-
Das Kontaktformular mit dem Mailer ist ja ok. Oben ist von der passwortvergessen.php der gesamte Code, falls Du Zeit und Lust hast, vielleicht weißt du, was da geändert werden muss. TimTim hat mir schon sehr geholfen. Aber dafür hab ich keine anklickbaren Links mehr in der Mail. Ist vertrackt. Versuche schon alles seit über 14 Tagen, jedenfalls alles, was ich bisher kann bzw. kenne
-
Das Kontaktformular mit dem Mailer ist ja ok.
Dann kopiere doch den Teil mit dem Versenden, dann brauchst du doch nur noch den MailBody anpassen.
-
ich bin gerade dabei, wenn es klappt melde ich mich. Danke Dir
-
Ich versuche es nach diesem Beispiel umzubauen, aber dann wird die Seite nicht erkannt. Ich mach was falsch
PHP
Alles anzeigen<?php $empfaenger = "empfaenger@example.com"; // Mailadresse Empfaenger $betreff = "PHP-Mail-Test mit Umlauten"; $mailtext = "Inhalt einer Mail zum Test von PHP "; $mailtext .= "mit den deutschen Sonderzeichen öäüß"; $absender = "Ich Hier <absender@example.com>"; $headers = array(); $headers[] = "MIME-Version: 1.0"; $headers[] = "Content-type: text/plain; charset=utf-8"; $headers[] = "From: {$absender}"; // falls Bcc benötigt wird $headers[] = "Bcc: Der Da <mitleser@example.com>"; $headers[] = "Reply-To: {$absender}"; $headers[] = "Subject: {$betreff}"; $headers[] = "X-Mailer: PHP/".phpversion(); mail($empfaenger, $betreff, $mailtext,implode("\r\n",$headers)); echo "E-Mail mit Umlauten wurde gesendet!"; ?>
-
Entweder weißt du nicht, was der phpMailer ist, oder du bist extrem stur?!
Siehe z.B. PHP Mail funktioniert nicht
-
Immerhin Fortschritt. Aber die Mail kommt nicht an nach dem Absenden. Falls ich Dir den Code, wie ich ihn jetzt habe, nochmal schicken dürfte zur Ansicht melde Dich bitte.
-
Benutzt du jetzt wirklich den phpMailer? Wenn ja, dann zeige deinen Quellcode.
-
Bin mir nicht sicher was ich bei X-Mailer eintragen muss. Habe es mit der class.phpmailer.php versucht, aber dann zurückgesetzt
PHP
Alles anzeigen<?php session_start(); require_once("inc/config.inc.php"); require_once("inc/functions.inc.php"); include("templates/header.inc.php"); require_once("include/class.phpmailer.php"); ?> <div class="container"> <div class="registration-form"> <div class="jumbotron"> <h6>Passwort vergessen</h6> </div> <?php $showForm = true; if(isset($_GET['send']) ) { if(!isset($_POST['email']) || empty($_POST['email'])) { $error = "<b>Bitte eine E-Mail-Adresse eintragen</b>"; } else { $statement = $pdo->prepare("SELECT * FROM users WHERE email = :email"); $result = $statement->execute(array('email' => $_POST['email'])); $user = $statement->fetch(); if($user === false) { $error = "<b>Kein Benutzer gefunden</b>"; } else { $passwortcode = random_string(); $statement = $pdo->prepare("UPDATE users SET passwortcode = :passwortcode, passwortcode_time = NOW() WHERE id = :userid"); $result = $statement->execute(array('passwortcode' => sha1($passwortcode), 'userid' => $user['id'])); $empfaenger = "mail.de"; // Mailadresse Empfaenger $betreff = "PHP-Mail-Test mit Umlauten"; $mailtext = "Inhalt einer Mail zum Test von PHP "; $mailtext .= "mit den deutschen Sonderzeichen öäüß"; $absender = "mail.de>"; $headers = array(); $headers[] = "MIME-Version: 1.0"; $headers[] = "Content-type: text/plain; charset=utf-8"; $headers[] = "From: {$absender}"; // falls Bcc benötigt wird //$headers[] = "Bcc: Der Da <mitleser@example.com>"; $headers[] = "Reply-To: {$absender}"; $headers[] = "Subject: {$betreff}"; $headers[] = "X-Mailer: PHP/".phpversion(); mail($empfaenger, $betreff, $mailtext,implode("\r\n",$headers)); $url_passwortcode = getSiteURL().'domain.de/passwort_zuruecksetzen.php??userid='.$user['id'].'&code='.$passwortcode; //Setzt hier eure richtige Domain ein $text = 'Hallo '.$user['vorname'].', für deinen Account auf domain.de wurde nach einem neuen Passwort gefragt. Um ein neues Passwort zu vergeben, rufe innerhalb der nächsten 24 Stunden die folgende Website auf: '.$url_passwortcode.' Sollte dir dein Passwort wieder eingefallen sein oder hast du dies nicht angefordert, so bitte ignoriere diese E-Mail. Viele Grüße, Alien'; echo "Ein Link um dein Passwort zurückzusetzen wurde an deine E-Mail-Adresse gesendet."; $showForm = false; } } } if($showForm): ?> Gib hier deine E-Mail-Adresse ein, um ein neues Passwort anzufordern.<br><br> <?php if(isset($error) && !empty($error)) { echo $error; } ?> <form action="?send=1" method="post"> <label for="inputEmail">E-Mail</label> <input class="form-control" placeholder="E-Mail" name="email" type="email" value="<?php echo isset($_POST['email']) ? htmlentities($_POST['email']) : ''; ?>" required> <br> <input class="btn btn-primary" type="submit" value="Neues Passwort"> </form> <?php endif; //Endif von if($showForm) ?> </div> </div> <!-- /container --> <?php include("templates/footer.inc.php") ?>
-
Hi Alien,
du bringst da gerade einige dinge durcheinander in deinem Code, der PHP-Mailer ist eine eigene Klasse, wenn du den versandt der E-Mail selbst schreiben möchtest, lies dir mal bitte die gesamte Anleitung hier durch: https://www.php-rocks.de/thema…senden-mit-phpmailer.html
noch verwendest du die standard mail() Funktion von PHP.
Zu dem teil mit der html Mail un dem nutzen von HTML im E-Mailtext müsstest du im header von
Content-Type: plain/text auf
wechseln.
Dann müsste sowas in deinem E-Mail Text funktionieren:
Code$mailtext = "Ümlaute <a href='http://localhost'>http://localhost</a> <br/> Mehr text mit Umlauten äüö";
Grüße
Timo
-
Benutzt du jetzt wirklich den phpMailer? Wenn ja, dann zeige deinen Quellcode.
Zitatmail($empfaenger, $betreff, $mailtext,implode("\r\n",$headers));
Ich bin raus!
-
Trotzdem danke, ich hab halt gegoogelt da ich es nicht besser weiß
-
Hi Timo,
ich danke Dir. Werde es mir nochmal ansehen. Was Du mir gesagt hast, war ja schon sehr gut, nur das eben die generierten Links zum Passwort ändern nicht mehr als anklickbare Links funktionieren.
Aber ich werde nochmal dran arbeite, falls ich hinbekomme melde ich mich. Vielen Dank nochmal für Deine Hilfe.
Gruß
Alien
-
Nur, um mal etwas Verständnis nahezubringen, das hier
bewirkt, dass Deine Mail nicht RFC konform ist! Und auch das kann u.U. bereits dafür sorgen, dass Du als Spam gewertet wirst.
Lt. RFC müssen bspw. alle Mail Header mit einem CrLf enden, das was Du halt mit \r\n angibst.
Das implode() aber arbeitet nicht so, dass alle Elemente des Array diese Sequenz angehängt bekommen, sondern lediglich jedes Folgeelement an sein Vorgängerelement über diese Sequenz angehängt wird. Falls der Groschen noch nicht gefallen ist:
Das letzte Element hat diese Sequenz nicht und entspricht damit im Bereich Mail nicht der RFC.
Nimm das jetzt aber bitte nicht als Lösung für Dein Problem, denn das ist nur ein Tropfen auf dem heißen Stein!
Mailer-Klassen nehmen Dir die RFC-Konformitäten weites gehend ab und sorgen so für möglichst saubere E-Mails.
-
Hallo Arne,
Dir auch Danke für Deine Mühe. Ich lese gerade den Link wo Du es beschreibst, Aber das übersteigt meine Fähigkeiten. Ich denke ja immer: geht nicht gibt es nicht und hasse es, an meine Grenzen zu kommen. Aber das werde ich so nicht hinbekommen. Ist für Leute wie euch frustrierend und für mich gerade auch.
Aber ich habe zumindest jetzt verstanden, WARUM das falsch ist, also vielen Dank. Aber noch gebe ich nicht auf. Was ich absolut nicht verstehe, warum der PHPMailer für das Kontaktformular und für die Versendung der Mails nach Upload funktioniert, nur nicht auf der vergessen.php
Gruß Alien
-
Sorry, ohne Eigenlob verteilen zu wollen, aber das ist eine der simpelsten Anleitungen, den PHPMailer zu integrieren, die Du im Netz finden kannst.
Wenn Dich das an Deine Grenzen bringt, würde ich Dir erst recht davon abraten, mail() zu verwenden, denn das erfordert deutlich mehr KnowHow, wenn man es richtig machen will!
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!