open(mail...
Steve
- cgi
0 xNeTworKx0 Oliver Fürst0 Klaus Mock0 Steve
Hallöchen!
Ich hab grad erst angefangen zum pl-Programmiern, also bitte nicht bös sein, wenn's 'ne blöde Frage ist, aber ich hab's im SelfHTML leider nicht gefunden...
Hat irgendwer Erfahrung mit dem |mail?
Also: open(mail, "|mail xyz@yahoo.de");
Da schmeißt er mir immer die Meldung, dass ich ein package für @yahoo brauche.
mlg Steve
Hallo,
Ich hab grad erst angefangen zum pl-Programmiern, also bitte nicht bös sein, wenn's 'ne blöde Frage ist, aber ich hab's im SelfHTML leider nicht gefunden...
es gibt keine blöden Fragen, nur blöde Antworten
Also: open(mail, "|mail xyz@yahoo.de");
Da schmeißt er mir immer die Meldung, dass ich ein package für @yahoo brauche.
ich weis zwar nicht genau was du meinst, aber
1. du musst den pfad zu sendmail angeben also | /usr/sbin/sendmail -n -t #(in den meisten Fällen)
2. Interpretiert dein Webspace auch sendmail ?
Guten Abend,
Ich hab grad erst angefangen zum pl-Programmiern, also bitte nicht bös sein, wenn's 'ne blöde Frage ist, aber ich hab's im SelfHTML leider nicht gefunden...
http://aktuell.de.selfhtml.org/artikel/cgiperl/form-mail/index.htm
Gruß,
Oli
P.S. Alternativ dazu kannst du dir den Quelltext des sehr
verbreiteten formmail.pl von Matt Wright anschauen...
http://worldwidemart.com/scripts/formmail.shtml#Downloading
Hallo,
Ich hab grad erst angefangen zum pl-Programmiern,
Das ist eine gute Idee;-)
[...]aber ich hab's im SelfHTML leider nicht gefunden...
SelfHTML ist eine gute Quelle des Wissens, aber nicht die einzige;-)
Also: open(mail, "|mail xyz@yahoo.de");
Wie schon gesagt wurde, solltest Du, wenn Du ein externes Programm zum Mailversenden verwendest, unbedingt den vollständigen Pfad, also z.B. '/usr/sbin/sendmail' angeben, um Dich so wenig wie möglich auf Systemeinstellungen (in diesem Falle die Umgebungsvariable PATH) verlassen zu müssen.
Da schmeißt er mir immer die Meldung, dass ich ein package für @yahoo brauche.
Du verwendest anscheinend 'use strict'. Das ist gut so;-)
Bei Perl wird unterschieden ob Du eine Textkonstante mit einfachen Anführungszeichen ' oder doppelten " angegeben wird.
Verwendest Du doppelte, dann ersetzt Perl eventuell darin vorkommende Variablen durch deren Inhalt. In Deinem Fall ("|mail xyz@yahoo.de"), soll also @yahoo ersetzt werden. Da es aber anscheinend diese Variable nicht gibt, und weil Du brav 'use strict' verwendest, kommt die Fehlermeldung.
Hättest Du 'use strict' nicht verwendet, würde kein Fehler auftauchen, aber auch keine Mail, da sie ja an 'xyz.de' (@yahoo existiert nicht, also würde auch @yahoo im Text durch nichts ersetzt werden) gesendet werden würde, was aber nicht richtig ist.
Diese Fehlermeldungen sind einer der Gründe, immer unbedingt 'use strict' zu verwenden.
Noch ein paar Hinweise:
Dateihandles, die Du mit open erzeugst, sollten vereinbarungsgemäß GROSS geschrieben sein, während Variablen klein geschrieben wwerden sollten (siehe perldoc perlstyle).
Sämtliche Operationen in einem Script, welche potenziell scheitern könnten, und somit nachfolgenden Code unsinnig machen, sollten auf erfolgreiche Ausführung getestet werden.
also entweder
if(open(....))
{
#hier der Code, der ans MAilprogramm gesendet werden soll
}
else
{
# hier eventuell eine Fehlermeldung
}
oder (etwas brutaler)
open(...) or die "open hat nicht funktioniert: Fehlermeldung $!";
($! enthält die Systemfehlermeldung, siehe perldoc perlvar)
So, was bleiben Dir also für Möglichkeiten bezüglich @yahoo?
Du kannst beispielsweise einfache Anführungszeichen verwenden
open(MAIL, '|/pfad/zu/mail xyz@yahoo.de') or die "Kann Mailprogarmm nicht ansprechen $!";
oder aber das @ mit einem \ ausmaskieren
open(MAIL, "|/pfad/zu/mail xyz@yahoo.de") or die "Kann Mailprogarmm nicht ansprechen $!";
Hoffe, es hilft Dir weiter.
Grüße
Klaus
Hallo Leute!!
Also, echt herzlichen Dank an euch alle, es hat mir sauber weitergeholfen!! Ich hab mir schon gedacht, dass Perl das @yahoo als Liste auffasst. Aber einfach die Klammern austauschen (das hab ich jetzt gemacht), auf das bin ich nicht gekommen. Danke nochmals!!