Probleme mit der PHP-Funktion "mail()"

McMatze

Enthusiast
Thread Starter
Mitglied seit
14.05.2005
Beiträge
275
Ort
Bremen
Hallo Luxxe,

habe ein Formular erstellt, was ich nun mit der PHP-Funktion "mail()" verschicken will.
Leider klappt das irgendwie nicht.
Hier mal mein Code(-schnipsel):
PHP:
/* Empfaenger der Mail */
			$empfaenger="xxx@xxx.de";
			/* Absender der Mail */
			$absender="Kontaktformular - Essenbestellung Online";
			/* Rueckantwort */
			$reply=$email;
			/* Betreff */
			$subject="Kontakformular";
			/* Nachricht */
			$message="
				<html>
					<head>
						<title>Kontaktformular - Essenbestellung Online</title>
					</head>
					<body>
						<table align='left' style='width:400px' border='0' cellspacing='0' cellpadding='0'>
							<tr>
								<td align='right' style='width:195px'>Schulnummer:</td>
                <td align='center' style='width:10px'> </td>
                <td align='left' style='width:495px'>".$_POST["form_snr"]."</td>
							</tr>
              <tr>
                <td align='right'>Name:</td>
                <td> </td>
                <td align='left'>".$_POST["form_nachname"]."</td>
              </tr>
              <tr>
                <td align='right'>Vorname:</td>
                <td> </td>
                <td align='left'>".$_POST["form_vorname"]."</td>
              </tr>
              <tr>
                <td align='right'>Telefon:</td>
                <td> </td>
                <td align='left'>".$_POST["form_telefon"]."</td>
              </tr>
              <tr>
                <td align='right'>eMail:</td>
                <td> </td>
                <td align='left'>".$_POST["form_email"]."</td>
              </tr>
              <tr>
                <td align='right'>Problembeschreibung:</td>
                <td> </td>
                <td align='left'>".$_POST["form_eingabe"]."</td>
              </tr>
						</table>
					</body>
				</html>
			";
			/* Header der Mail */
			$header="From: ".$absender."\n";
			$header.="Reply-To: ".$reply."\n";
			/* Sende die Mail */
			$mail=mail($empfaenger,$subject,$message,$header);
			if(!$mail) {
				die("Konnte die eMail nicht verschicken!<br />".$mail);
			}

Kann mir das vllt. jemand helfen?
Habe auch schon gegoogelt, konnte aber nichts hilfreiches finden... :(

Vielen Dank im Voraus. :drool:
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
kannst du dein "klappt nicht" vielleicht genauer definieren?

Der Code sieht auf den ersten Blick aber ok aus. Ist auf deinem Server ein SMTP Server installiert ist, und ist PHP entsprechend konfiguriert den zu nutzen?
 
Öhm...
Fehler äußert sich, dass der Code die Überprüfung durchläuft und dann anschließend die "die()"-Funktion ausgibt.

SMTP-Server ist nicht installiert. Soll/will ich auch nicht, da wir hier in der Firma einen Exchange-Server haben und ich den nutzen soll. Kann ich denn diesen irgendwo eintragen? Und wie kann ich PHP dementsprechend konfigurieren?
Serversystem ist Ubuntu 8.04.
 
ohne SMPT Server ist es natuerlich eher schwer eine mail per smtp zu versenden ;)

den server kannst du in der php.ini angeben. mehr dazu in der php doku. Ob das mit einem Exchange auch geht weiss ich aber nicht.

Ich wuerde allerdings auf die Zend_Mail Klasse aus dem Zend Framework setzen. Dort kannst du einen anderen Transport auswaehlen ohne an die php.ini zu muessen. Doku gibt es hier
 
Hmm...
Werde mir das Zend-Dingens da mal reinziehen. :fresse:
Danke erstmal bis hierhin. Wenn ich noch fragen haben sollte, werde ich mich ncohmal melden! :d
 
Du kannst in der php.ini einen default smtp server setzen. Frag mich jetzt aber nicht nach der option. Und da sollte meines wissens auch Exchange funktionieren.
 
Hmm...
Ich bin gerade dabei, dieses Zend auszuprobieren.
Kann mir denn mal jemand sagen, wie ich dieses Zend einbinde??
Habe schon alle möglcihen include-Funktionen probiert... Kein Erfolg :motz:
Weiß das jemand? Mit dem HowTo von Zend selber habe ich acuh kein Erfolg... bekomme das einfach nicht hin... :wall:
 
setz den include path (set_include_path) auf den ordner in dem der Zend Ordner liegt. Meistens "Lib" dann einfach require_once('Zend/Mail.php');
 
Ist mir ja schon fast peinlich...
Anscheinend bin ich mometan nicht hell genug, um das hin zu bekommen... :(
Bekomme immer noch eine Fehlermeldung:
Code:
Warning: require_once(zend/Mail.php) [function.require-once]: failed to open stream: No such file or directory in /var/www/SFTP-Server/Essensbestellung/impressum.php on line 8

Fatal error: require_once() [function.require]: Failed opening required 'zend/Mail.php' (include_path='/zend/library/') in /var/www/SFTP-Server/Essensbestellung/impressum.php on line 8

Ich habe das folgendermaßen eingebunden:
PHP:
set_include_path("zend/library/");
	echo get_include_path(),
	require_once("zend/Mail.php");
	
	$tr = new Zend_Mail_Transport_Smtp('xxx@xxx.de');
	Zend_Mail::setDefaultTransport($tr);

Und die Ordnerstruktur sieht folgendermaßen aus:
Code:
Server/
     Ordner/
     Ordner/
     Zend/
     eine_seite/
     eine_seite/
     usw.

Kann jemand was damit anfangen? :fresse:
Habe ich das zend vllt falsch abegelegt?
bin der Verzweiflung nahe... :( So schwer kann das doch nicht sein, oder? :( :wall:

Edit:
@Kasn:
Habe gerade auf deiner WebSite gesehen, dass Du ja zertifizierter ZEND Engineer bist.
Welch ein glücklicher Zufall für mich. :fresse:
 
Zuletzt bearbeitet:
probier es mal so:

PHP:
$basepath = dirname(__FILE__);

$path = $basepath . '/Zend/library';

set_include_path(get_include_path() . PATH_SEPARATOR . $path);
 
Bekomme dieses mal wieder so ziemlich die selbe Fehlermeldung:
Code:
Warning: require_once(zend/Mail.php) [function.require-once]: failed to open stream: No such file or directory in /var/www/SFTP-Server/Essensbestellung/impressum.php on line 9

Fatal error: require_once() [function.require]: Failed opening required 'zend/Mail.php' (include_path='.:/usr/share/php:/usr/share/pear:/zend/library') in /var/www/SFTP-Server/Essensbestellung/impressum.php on line 9
 
ja, das ist schon klar, der pfad geht wegen dem / am anfang von einem absoluten pfad aus. und einen ordner '/zend/library/ hast du ja nicht auf der maschine.
das snippet oben funzt bei mir so
 
Geht au alles nicht :wall: :wall:
DAS steht in der .php-Datei:
PHP:
$path="zend/library/";
	set_include_path(get_include_path() . PATH_SEPARATOR . $path);  
	echo get_include_path(),
	require_once("zend/Mail.php");
	
	$tr = new Zend_Mail_Transport_Smtp('xx@xxx.de');
	Zend_Mail::setDefaultTransport($tr);

Liegt das vllt. an meine Ordnerstruktur?? :wall: Bin ich sooo dumm? :fresse:
 
Zuletzt bearbeitet:
$basepath = dirname(__FILE__);

$path = $basepath . '/Zend/library';

vergleich doch mal. was fehlt da bei dir? vielleicht das $basepath zeug ;)
 
lol... :shot: Völlig übersehen... :d

Aber irgendwie immer noch nicht das richtige. Bekomme wieder den altbekannten Fehler.

PHP:
	$basepath=dirname("/Essensbestellung/impressum.php");
	$path=$basepath."zend/library/";
	set_include_path(get_include_path() . PATH_SEPARATOR . $path);  
	echo get_include_path(),
	require_once("zend/Mail.php");
 
Zuletzt bearbeitet:
nimm bitte das __FILE__ und nicht was du da reinschreibst. __FILE__ ist eine konstante von php die immer deine datei ist. du musst davon so oft dirname machen bis du in der richtigen ebene bist

/Lib/Zend/
/index.php
/seiten/asdf.php

in der index.php dann nur dirname(__FILE__);
in der /seiten/asdf.php dann dirname(dirname(__FILE__));
 
Hmm... Sorry...
Also meine Serverstruktur sieht so aus:
Code:
Server/
     zend/
          library/
     die_seite.php
     usw.
Also müsste ich doch in diesem Falle ein einfacher dirname(__FILE__) nehmen, wenn ich das jetzt richtig verstanden habe.

Bekomme dann allerdings immer noch die selbe Fehlermeldung. :wall:

Sieht nun so aus:
PHP:
	$basepath=dirname(__FILE__);
	$path=$basepath."/Zend/library";
	set_include_path(get_include_path() . PATH_SEPARATOR . $path);  
	echo get_include_path(),
	require_once("/Zend/Mail.php");

Mir ist auch aufgefallen, dass, wenn ich die Mail.php öffne, ebenfalls diesen Fehler habe. Hat das was zu sagen?
 
Zuletzt bearbeitet:
Zend oder zend? das dateisystem ist case sensitive.
 
Jop!
Habe das eben geändert und im geänderten Post nicht mehr nachgeändert. "Zend" ist nun überall groß geschrieben. Wollte halt so mal gucken, ob das evtl. daran liegt. Aber daran liegt es au nit... :(
 
Keiner mehr eine Idee?
Kann doch nicht angehen, dass ich es nicht schaffe, eine eMail über eine PHP-Seite zu verschicken?! :motz: :wall:
 
Interessant wäre die genau Fehlermeldung - auch wenn ich mir die schon denken kann.
Also einfach mal folgendes auskommentieren:
Code:
if(!$mail) {
    die("Konnte die eMail nicht verschicken!<br />".$mail);
}
 
Wenn ich das auskommentiere, dan kommt gar keine Fehlermeldung. Der lädt einfach die Seite neu, ohne irgendeinen Hinweistext.

Aber das ist jetzt auch egal, denn habe das mit einer pear-Klasse hinbekommen. :)
Aber danke für Eure Hilfe!
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh