Steusi Geschrieben 16. Dezember 2008 Geschrieben 16. Dezember 2008 Hallo Leute, ich habe ein Problem ich versuche mit PHP eine E-Mail mit der Funktion mail() zuverschicken. (Arbeite aber noch mit Xampp!!) Nur leider kommt nichts an, wenn ich es an meine Adresse (@gmail.com) sende? Leider bekomme ich bei PHP keine Fehlermeldung, wo kann der Fehler liegten? Error Report ist angeschaltet mit: error_reporting(E_ALL | E_STRICT); echo $sender; echo $newmail; echo $betreff; echo $mailtext; mail($newmail, $betreff, $mailtext, "From: $sender ");[/PHP] Alles wird ausgegeben, nur wird die E-Mail nicht versendet. Muss der Sender eine reale Adresse sein? Muss ich den bei Xampp irgendwie vorher einrichten? Bin verzweifelt.
Crash2001 Geschrieben 16. Dezember 2008 Geschrieben 16. Dezember 2008 schreib dein Script doch einfach mal so um, dass es dir ausgibt, ob der Mailversand an den Server erfolgreich war. Existiert überhaupt ein Mailserver/Account für den Versand, oder hast du da gar nichts eingerichtet?
Steusi Geschrieben 16. Dezember 2008 Autor Geschrieben 16. Dezember 2008 (bearbeitet) Also SMTP habe ich nicht installiert, ich dachte für mail() ist es nicht notwendig? Oder doch? Fall ja, reicht es wenn ich in der php.ini einen SMTP eintrage? Muss $sender ein bestimmtes Format haben sprich NAME@localhost.de ? Oder geht auch NAME@DOMAIN.de ? Ich bin immernoch unter Xampp bitte beachten. Mailserver muss ich nicht extra installieren, Mercury von Xampp reicht völlig aus oder? Bearbeitet 16. Dezember 2008 von Steusi
Crash2001 Geschrieben 16. Dezember 2008 Geschrieben 16. Dezember 2008 (bearbeitet) Willst du LOKAL eine Mail verschicken, oder "nach draussen ins Internet"? Für lokal reicht der Mercury - klar. Aber wenn du einem externen Mailserver eine Mail schicken willst, dann musst du auch seine entsprechenden Daten eintragen, damit du richtig authentifiziert wirst, er die Mail überhaupt annimmt und auch weiterschickt. Du kannst aber Mercury die Mails über deinen Account bei einem Mail-Provider wie GMX.de, web.de o.ä. ausliefern lassen per SMTP. Den Mailserver erst einmal eintragen musst du aber dennoch. Der muss PHP aber erst einmal bekannt gemacht werden. Und zwar in der php.ini in dem Bereich [mail function]. Also willst du die Mails von Mercury ausliefern lassen, dann trag seine Daten dort ein. Soll es über einen externen Mailserver per SMTP gehen, dann trag dessen Daten an der entsprechenden Stelle ein. Wie wenn nicht üer SMTP soll denn die Mail sonst verschickt werden? :confused: Bearbeitet 16. Dezember 2008 von Crash2001
Steusi Geschrieben 16. Dezember 2008 Autor Geschrieben 16. Dezember 2008 Ich denke mal, ich werde es einfach mal über web oder gmx testen, dann ist die Umstellung vielleich nicht so kopliziert, wenn ich es nachher auf den Webspace lade, da bräuchte ich dann doch nur die Mail-Adresse ändern? Mal sehen ob ich das alles so hinbekomme. Es gibt doch auch die Möglichkeit über den phpmailer! Dazu habe ich folgendes gefunden: //// VERSENDEN DER EMAIL //// function send_email($empf, $mailtext, $betreff, $anhang) { $mail = new PHPMailer(); $mail->IsSMTP(); // send via SMTP $mail->Host = “mein.mailserver.de”; // SMTP servers $mail->SMTPAuth = true; // turn on SMTP authentication $mail->Username = “XXXXX”; // SMTP username $mail->Password = “XXXXXX”; // SMTP password $mail->From = “meine@emailadresse.de”; $mail->FromName = “Mein Name”; $mail->AddReplyTo(”meine@emailadresse.de”,”Mein Name”); /// EMPFÄNGER EINTRAGEN //// $teile = explode(”;”, $empf); reset ($teile); while (list ($key, $val) = each ($teile)) { $mail->AddBCC($val); } /// ANHÄNGE /// $teile = explode(”;”, $anhang); reset ($teile); while (list ($key, $val) = each ($teile)) { $dateiname = explode(”/”, $val); $dateiname = array_pop($dateiname); /// Anhängen $mail->AddAttachment($val, $dateiname); } $mail->IsHTML(true); // send as HTML $mail->Subject = $betreff; $mail->Body = $mailtext; $mail->AltBody = $mailtext; if(!$mail->Send()) { exit; } $mail->ClearAddresses(); $mail->ClearAttachments(); }[/PHP]
Steusi Geschrieben 16. Dezember 2008 Autor Geschrieben 16. Dezember 2008 Wenn ich jetzt die php.ini Datei so abgeändert habe, das dort fogendes steht: [mail function] ; For Win32 only. SMTP = smtp.web.de smtp_port = 25 Wie kann ich jetzt darauf zugreifen? Muss ich den $sender = NAME@web.de wählen, das reicht/klappt nicht? Muss ich folgendes noch abändern: ; For Win32 only. ;sendmail_from = me@example.com Mit der Funktion mail() komm ich doch nicht weiter oder? Sollte wohl besser auf die Klasse PHPMailer umsteigen oder was meint Ihr?
Crash2001 Geschrieben 16. Dezember 2008 Geschrieben 16. Dezember 2008 Bei Web.de könnte das Problem sein, dass der Server Authentifizierung vorm Mail-Versand verlangt. Da ich web.de schon Ewigkeiten nicht mehr genutzt habe, weiss ich rgad nciht mehr, mit welchen Daten man sich da nochmal einloggen muss. Sollten aber die gleichen sein, mittels denen man auch per Outlook Mails darüber verschicken kann. Wenn der PHPMailer bei dir funktioniert, spricht ja nichts dagegen, den nicht zu verwenden. Zumindest falls bei dir nichts dagegen spricht.
Steusi Geschrieben 16. Dezember 2008 Autor Geschrieben 16. Dezember 2008 Die Funktion klappt auch nicht ohne weiteres. Zudem möchte ich es lieber selbst verstehen als einfach ein fertiges Script zu nehmen. Dachte der Mailversand ist wesentlich einfacher... Hat jemand eine Tipp was ich ändern sollte. Damit es einfach klappt?
Amstelchen Geschrieben 16. Dezember 2008 Geschrieben 16. Dezember 2008 wenn du smtp.web.de als SMTP verwendest, solltest du vielleicht mal feststellen, ob der mailserver deine mails überhaupt annimmt. du kannst das ganz leicht, indem du dich z.b. mittels telnet auf port 25 des MTA hängst und das mail direkt als SMTP-session übergibst. du wirst dann ja schnell feststellen, ob der SMTP dich vorher authentifiziert haben will, denn die meisten mailserver nehmen mail nicht von jedem client an. GMX verlangt beispielsweise POP-before-SMTP, bei WEb.de könnte das ähnlich sein. s'Amstel
Steusi Geschrieben 16. Dezember 2008 Autor Geschrieben 16. Dezember 2008 telnet, wie muss ich das den testen beim eigenen localhost? Da erhalte ich: 220 localhost ESMTP server ready. zu smtp.web.de oder WEB.DE erhalte ich: telnet smtp.web.de 25 Verbindungsaufbau zu smtp.web.de...Es konnte keine Verbindung mit dem Host hergestellt werden, auf Port 25: Verbinden fehlgeschlagen Das heißt jetzt was? Es muss ja auch nicht web.de sein, hab mir eh gerade nur für den Zweck da gerad ein Acc angelegt!
Amstelchen Geschrieben 16. Dezember 2008 Geschrieben 16. Dezember 2008 (bearbeitet) telnet, wie muss ich das den testen beim eigenen localhost? in dieser reihenfolge: HELO, MAIL FROM, RCPT TO, DATA, QUIT notfalls lies dich mal in RFC 822 (?) ein, da steht, wie SMTP überhaupt funktioniert. kann ja nicht schaden, die basics zu wissen. zu smtp.web.de oder WEB.DE erhalte *ich*: xxx@s2$ telnet smtp.web.de 25 Trying 217.72.192.157... Connected to smtp.web.de. Escape character is '^]'. 220 smtp08.web.de ESMTP WEB.DE V4.109#226 Tue, 16 Dec 2008 13:56:57 +0100 geht also. bist du hinter einer firewall? s'Amstel Bearbeitet 16. Dezember 2008 von Amstelchen
Steusi Geschrieben 16. Dezember 2008 Autor Geschrieben 16. Dezember 2008 Firewall (ein Linuxsystem ersetzt diese) zusätzlich noch ein Proxyserver. Sitze im Betrieb und wollte nur die Mail funktion testen. Dann kann ich das erstmal vergessen muss ich dann mal vom Server testen?
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden