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. Zitieren
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? Zitieren
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 Zitieren
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 Zitieren
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] Zitieren
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? Zitieren
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. Zitieren
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? Zitieren
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 Zitieren
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! Zitieren
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 Zitieren
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? Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.