PHP mail und "php interactive mode" - Probleme

CitroenDsVier

Lt. Commander
Registriert
Dez. 2013
Beiträge
1.885
Hallo zusammen,

ich versuche verzweifelt, von meinem Webserver eine eMail zu schicken. Vorab: Ja, es gibt 1000 Threads dazu. Keiner der in den letzten Stunden durchforsteten Threads in diversen Foren hat mir geholfen. Daher hier der 1001. Thread dazu :)
Folgendes Setup:

1) VM. Ubuntu-Server, Apache2, php7.0
2) Raspberry Pi, Raspbian, nginx, php 5.x
3) strato Webserver, php 5.6

Folgende Probleme, sortiert nach Plattform:

1) über eine SSH-Verbindung gebe ich "php -a" in die Kommandozeile ein, komme in den "interactive mode", kann mit folgendem Code eine eMail _nicht_ senden und erhalte den Rückgabewert 1. Entgegen der php-Dokumentation, die sagt, mail() würde einen boolean zurückgeben, erhalte ich immer 1. Egal, was ich mache. Eine eMail wird aber nicht gesendet.
Code:
echo mail('meine@email.de', 'betreff', 'inhalt');
2) auch SSH-Verbindung, ich gebe "php -a" ein. Es erscheint ein "interactive mode enabled", allerdings kein ">" - d.h. ich kann keinen Code eingeben, sondern die Konsole oder was auch immer ist eingefroren. Ich kann zwar Romane dahinschreiben und Enter drücken, allerdings wird nichts ausgeführt. Mit CTRL + C komme ich aus der Nummer wieder raus.
3) selbes Verhalten wie bei 2).

Unter 3) kann ich mit einer php Datei aber problemlos eMails senden, die werden verschickt und kommen auch an. Rückgabewert ist hier ebenfalls 1.


Wo kann ich hier ansetzen, wo liegt das Problem bzw wie finde ich raus, wo das Problem liegt?

MfG, V40

Nachtrag: Wenn ich den oben geschriebenen Code in eine php Datei stecke und aufrufe, erhalte ich folgendes Verhalten:
1) Rückgabewert 1, aber keine gesendete eMail
2) keine Reaktion (kein Rückgabewert, keine eMail)
3) Rückgabewert 1, eMail wird gesendet und kommt an
 
Zuletzt bearbeitet: (Nachtrag)
Auszug aus der Dokumentation zu der mail-Funktion:
http://php.net/manual/en/function.mail.php schrieb:
Returns TRUE if the mail was successfully accepted for delivery, FALSE otherwise.

It is important to note that just because the mail was accepted for delivery, it does NOT mean the mail will actually reach the intended destination.

Daraus ergeben sich zwei Dinge: 1. Die mail-Funktion liefert als Ergebnis entweder true oder false zurück und 2. PHPs mail-Funktion kann Mails nicht direkt versenden, sondern nur an einen MTA weiterleiten.

Dass du keine Mails von deinen eigenen Systemen verschicken kannst, liegt wohl daran, dass du keinen MTA eingerichtet hast (unter Linux z. B. sendmail). Über Strato gehts natürlich, weil die das richtig konfiguriert haben.

Und zu guter Letzt:
PHP:
echo true; // 1
 
Ja, das php-manual habe ich auch gelesen. Daher weiß ich die Sache mit den Rückgabewerten ja.

Dass "echo true;" eine 1 ausgibt, wusste ich nicht. Gut zu wissen...


woher weiß php, mit welchem MTA es arbeiten soll?

Unter 2) erhalte ich aber überhauptgarkeinen Rückgabewert für mail(). Oder ist "echo false;" zufällig ein leerer String? :lol:
Da ich hier auch nicht in den commandline-Modus für php komme, ist die Sache ein wenig erschwert. Woran kann das liegen?
 
Zuletzt bearbeitet:
Das ist eine zu pauschale Antwort. Der TE hat nirgends geschrieben, dass er seinen eigenen Mailserver betreiben will.
 
Zurück
Oben