mail function
topfblume
- php
Tach auch ...
Ich lese mich gerade etwas in Materie rein. Ich habe Apache und php lokal auf meinem Rechner installiert.
Ich arbeite mich solangsam durch das php Buch durch und hatte eigentlich schon mindestens 1000 Fragen. Da übersieht man mal irgendwo ein Zeichen und nichts geht mehr. Ich muß sagen, php ist schon eine mächtige Sache.
So nu aber mal zu meiner Frage und zwar:
Kann ich überhaupt eine Mail per Formular verschicken?
Brauch doch bestimmt noch ein Mail server oder ähnliches??
Wie gesagt, alles lokal auf dem Rechner.
Laut Buch soll ich in der php.ini unter Mail Function die Daten von meinem Mailanbieter eingeben.
Dann müsste ich doch aber auch irgendwo ein Passwort für mein Mailaccount eingeben können.
ich kann mir nicht vorstellen, das ich da z.B. freenet oder gmx nehmen könnte.
Hier übrigens die Fehlermeldung:
Warning: mail(): SMTP server response: 550 syntax error in header in c:\php\pages...line41
Gruß
Tach auch ...
Hallo Hallo!
So nu aber mal zu meiner Frage und zwar:
Kann ich überhaupt eine Mail per Formular verschicken?
Brauch doch bestimmt noch ein Mail server oder ähnliches??
Wie gesagt, alles lokal auf dem Rechner.Laut Buch soll ich in der php.ini unter Mail Function die Daten von
meinem Mailanbieter eingeben.
Dann müsste ich doch aber auch irgendwo ein Passwort für mein
Mailaccount eingeben können.
ich kann mir nicht vorstellen, das ich da z.B. freenet oder gmx
nehmen könnte.
Klar, geht natürlich. du hast doch bestimmt auch nen internetprovider, sonst könntest du ja auch hier nicht posten. ;)
nimm einfach den smtp von dem... da brauchst du auch kein passwort.
findet man meistes auf der homepage des entsprechenden anbieters...
Gruß
grüße aus salzburg,
doflyer
Moin ...
Ist ja einfach nur -->> LOGISCH <<--
Wenn man den halben Tag sich als Neuling in mit php beschäftigt, vergisst man auch bald noch seinen Namen.
Selbsverständlich nehme ich die Daten von meinem Provider. Ich danke Dir für diesen Denkanstoß.
Ich höre jetzt wohl auch besser mal auf für heute, sonst vergesse ich wahrscheinlich noch das heut Erlernte.
Gruß
Kann ich überhaupt eine Mail per Formular verschicken?
Woher du deine Daten bekommst, die du per mail() versenden willst, ist egal.
Brauch doch bestimmt noch ein Mail server oder ähnliches??
Normalerweise ist ein Server ist zum Senden von Mail nicht erforderlich. Im Allgemeinen verwendet man jedoch einen solchen, da man sich dann nicht selbst um beispielsweise Wiederholungen bei Nichterreichbarkeit des Ziels kümmern muss.
Wie gesagt, alles lokal auf dem Rechner.
Und unter welchem Betriebssystem läuft der?
Unter Unix bedient sich PHP zum Mailsenden des Programmes sendmail (oder eines gleichnamigen Wrappers eines anderen Mail-Transfer-Agenten).
Unter Windows muss man in der php.ini unter SMTP einen Server einstellen, ansonsten wird localhost verwendet.
Laut Buch soll ich in der php.ini unter Mail Function die Daten von meinem Mailanbieter eingeben.
Dann müsste ich doch aber auch irgendwo ein Passwort für mein Mailaccount eingeben können.
Das Protokoll SMTP kennt erstmal keine Authentifizierung. Es gibt zwar diverse Verfahren (POP before SMTP) und Zusätze für dieses Thema, die hat aber PHP nicht implementiert.
Brauchst du eine Authentifizierung bei deinem Provider, musst du einen eigenen SMTP-Server dazwischenschalten, der sich am Provider-Server anmelden kann und die Post dorthin weiterleitet.
Alternativ kannst du das PEAR-Package Mail verwenden, das hat einen Driver namens smtp und spricht direkt mit dem Mailserver und kann dabei diverse Authentifizierungsmethoden verwenden.
Hier übrigens die Fehlermeldung:
Warning: mail(): SMTP server response: 550 syntax error in header in c:\php\pages...line41
Zeig mal, wie der mail()-Aufruf aussieht. (Wenn du Variablen verwendest, lass dir deren Inhalt ausgeben.)
hallo dedlfix,
[...] Authentifizierung
Ich möchte daran erinnern, daß es um das Senden geht.
Gruß aus Berlin!
eddi
[...] Authentifizierung
Ich möchte daran erinnern, daß es um das Senden geht.
Ja, darauf basierte meine Antwort. Was genau willst du mir eigentlich sagen?
Re:
Ja, darauf basierte meine Antwort. Was genau willst du mir eigentlich sagen?
Das ich nicht versehe, wofür man beim Senden von Mails ein Authentifizierung braucht!
Gruß aus Berlin!
eddi
hi,
Ja, darauf basierte meine Antwort. Was genau willst du mir eigentlich sagen?
Das ich nicht versehe, wofür man beim Senden von Mails ein Authentifizierung braucht!
die braucht man oftmals, weil die betreiber von mailservern natürlich nicht wollen, dass jeder xy von überall aus seinen spam in alle welt verschicken kann.
und deshalb gibt's so sachen wie "SMTP after POP", SMTP AUTH u.a.
gruß,
wahsaga
hi wahsaga,
das würde schlichtweg bedeuten, daß man für jede Mail, die man per PHP versendet das Passwort des zugehörigen MX-Host bräuchte. Das ist doch Quatsch!
Gruß aus Berlin!
eddi
hi,
das würde schlichtweg bedeuten, daß man für jede Mail, die man per PHP versendet das Passwort des zugehörigen MX-Host bräuchte. Das ist doch Quatsch!
"quatsch ist, was du draus machst ..." ;-)
es gibt verschiedene möglichkeiten, per PHP mails mittels mail() zu versenden:
entweder ist auf dem system ein lokaler MTA installiert und PHP entsprechend konfiguriert, diesen zu kennen. dann kann PHP natürlcih direkt mit diesem "sprechen", ohne sich authentifizieren zu müssen. wenn du darüber spamst, wird dein provider ja rauskriegen können, dass du der schuldige warst ...
wenn jedoch kein lokaler MTA vorhanden ist, kann man in der php.ini auf die adresse eines _externen SMTP-servers_ angeben - das ist es, worüber dedlfix hier sprach.
dieser wäre jetzt aber natürlich schön blöd, wenn er _alle_ anfragen, doch bitte eine mail zu versenden, annehmen würde - dann könnte ich ja mit smtp.yahoo.de oder smtp.web.de von meinem PHP-script aus "sprechen", und meine mailanfrage, ob der empfänger nicht zufällig ein bisschen V1A6R4 brauchen könnte, in alle welt rauspusten.
das wollen yahoo, web.de und co. aber natürlich nicht - also verlangen die von mir, dass ich mich authentifiziere, bevor sie mich mails über ihre SMTPs verschicken lassen.
wenn ich das webmail-interface nutze, geschieht dies schon über meinen login dort - wenn ich aber von zu hause aus mit meinem mailclient oder auch per PHP-script über ihren SMTP was versenden will, möchten sie natürlich erst mal wissen, wer ich denn eigentlich bin - also fordert der SMTP-server eine authentifizierung von mir ...
jetzt klarer?
gruß,
wahsaga
Re:
warum sollte ich, wenn ich schon mit PHP arbeite, über einen SMTP-Server gehen wollen? Erst letztlich habe ich zu diesem Thema durch google in einem Board eine Antwort von einem wahsaga (Du?) gesehen, wie mit einfachen Netzwerkfunktionen eine direkte Verbindung zum MX-Host aufgebaut wurde.
Das scheint mir das Beste zu sein und benötigt auch keine Authentivizierung.
Gruß aus Berlin!
eddi
warum sollte ich, wenn ich schon mit PHP arbeite, über einen SMTP-Server gehen wollen?
Z.B. weil es unter Windows mit PHP-Bordmitteln nicht anders geht.
Meine Antwort bezog sich allein auf das Absenden, also dass das PHP-Script (bzw. der Rechner auf dem das läuft) die Mail loswird. Wie der MTA oder der Einlieferungs-SMTP-Server die Mail weitersendet war nicht Gegenstand meiner Betrachtung.
Re:
Z.B. weil es unter Windows mit PHP-Bordmitteln nicht anders geht.
Ist schon ein Weilchen her, das ich PHP unter Windows genutzt habe, allerdings gibt es haufenweise HowTos, die das Versenden unter Windows mit Netzwerkfunktionen beschreiben.
Daher frage ich Dich nochmal: Du bist Dir sicher, das getmxrr() und fsockopen() _nicht_ unter Windows funktionieren?
Gruß aus Berlin!
eddi
Z.B. weil es unter Windows mit PHP-Bordmitteln nicht anders geht.
Du bist Dir sicher, das getmxrr() und fsockopen() _nicht_ unter Windows funktionieren?
Doch, das wird schon. Okay okay, "nicht geht" war nicht ganz richtig. Aber als Anfänger wird man damit sicher noch keine Erfahrung haben.
Und nicht immer will man die Probleme die man hat durch mehr Komplexität der Lösung noch komplizierter machen. :-)
hi,
warum sollte ich, wenn ich schon mit PHP arbeite, über einen SMTP-Server gehen wollen?
weil es zum testen daheim unter windows die einfachste möglichkeit ist?
Erst letztlich habe ich zu diesem Thema durch google in einem Board eine Antwort von einem wahsaga (Du?) gesehen, wie mit einfachen Netzwerkfunktionen eine direkte Verbindung zum MX-Host aufgebaut wurde.
schön, aber will ich das immer ...?
hier war danach gefragt, wie man am einfachsten mail() zum "funktionieren" bringen kann, wenn man lokal unter windows testet.
klar kann ich _stattdessen_ mir eine alternative über netzwerkfunktionen basteln, klar kann ich mir unter windwos einen mailserver wie bspw. den hamster installieren - aber wozu den aufwand, wenn ich nur dein script, welches mail() nutzt, testen will?
externen SMTP-server in der php.ini angeben, und ab dafür ...
Das scheint mir das Beste zu sein und benötigt auch keine Authentivizierung.
einer der vorteile des mailsystems ist, dass der empfänger-mailserver sich auch mal einen ausfall "leisten" darf - dann wird die zustellung von den beteiligten MTAs in der kette halt später noch mal versucht.
diese sicherheit bietet ein direktes ansprechen des ziel-SMTP aber nicht.
gruß,
wahsaga
Hallo ...
Ich danke auch Dir für Deine ausführliche Erklärung.
Wie gesagt ich bin noch ganz am Anfang was php betrifft.
Ich habe nur ein kleines Formular gebastelt, dass wenn alle Felder ausgefüllt sind, mir diese Angaben dann an meine E-Mail Adresse sendet.
Ich habe halt in der php.ini die Daten von meinem freenet Mail Account stehen gehabt und mich eine Zeit lang gewundert, warum es wohl nicht funktioniert.
Mit den Daten meines Providers hat es dann geklappt.
So und morgen bastel ich mal ein Formular ohne Buch!!!
-----------------werds versuchen----------------------------
Gruß