PHP/Perl Mail verschicken

Hi,

ich suche eine Möglichkeit per PHP oder Perl eine Mail zu verschicken. Ich habe auf meinem Linux PHP usw. installiert.

Ich habe es mittels PHP versucht :

Code:
$to          = "user@host.de";
$betreff    = "subject- ";
$text       = "message";
mail($to,$subject,$text);

Es kommt aber keine Mail an ?( Also habe ich mal gegoogelt, dort steht immer wieder diese schöne mail() Funktion.

Ich habe es auch noch per Perl versucht

Code:
#!/usr/bin/perl

$mailprog="/usr/sbin/sendmail"; # etc...

open (MAIL, "|$mailprog -t -i");

print MAIL "To: user@host.de \n";
print MAIL "From: user@host.de \n";
print MAIL "Subject: betreff...\n";

print MAIL "inhalt....\n\n";

print "Verschickt \n";

close(MAIL);

Aber hier kommt auch nix an, wie kann ich nun eine Mail verschicken. Ich habe eine Seite ( PHP ) und ich möchte eine Mail an mich schicken, wenn diese aufgerufen wird.
 
Wenn du die Mails auf einem Rechner abschickst, der eine dynamische IP hat, wird diese von den meisten Providern als Spam aussortiert. Damit die Mails also auch ankommen, wenn du sie über deinen hemischen Rechner und nicht über einen Server mit fester IP verschickst, musst du ein Mail-Relay benutzen.
 
also ne einfach php sache ist dies:

<?php
$empfaenger = "mail.@mail.com";
$betreff = "Du weisst schon was";
$from = "From: Name Name <mail@gmail.de>";
$text = "Hallo wie gehts";
mail($empfaenger, $betreff, $text, $from);
?>

Allerdings, brauchst du noch einen Mail-Server über den die Nachricht verschickt werden muss.
 
Gegenfrage: was nutzt du als MTA? (MailTransportAgent)

(sendmail, exim, whatelse?)

Wenn kein Programm da ist (oder nur für lokale Zustellung konfiguriert), welches die Mail dann tatsächlich versendet, kann keine Mail bei dir ankommen...

eidt: schon zum 2. mal an diesem Abend war SilentBoB schneller :-(

edit2: zur Vervollständigung von Bob's Beispiel:
der 4. Parameter, wo die Variable mit dem Inhalt "From: ..." drin ist, sind zusätzliche Mail-header-Daten - da kann also auch noch ein "Reply-To: ..." oder ein "X-Mailer: ..." usw. rein
(nicht damit der falsche Verdacht aufkommt, der 4. Parameter wäre lediglich eine Absender-Adresse)

edit3: *weiter hoch scroll*... oh, bitmuncher war ja noch schneller... jaaa, stimmt... die Mails, die du von deinem Rechner aus schickst, landen bei den meisten Providern im Spam-Ordner (an was der bitmuncher alles denkt... :-) )
 
Original von SilentBoB
also ne einfach php sache ist dies:

<?php
$empfaenger = "mail.@mail.com";
$betreff = "Du weisst schon was";
$from = "From: Name Name <mail@gmail.de>";
$text = "Hallo wie gehts";
mail($empfaenger, $betreff, $text, $from);
?>

Allerdings, brauchst du noch einen Mail-Server über den die Nachricht verschickt werden muss.

Falsch. Man braucht keinen Mail-Server um die Nachricht zu verschicken. Ich bin mir nicht sicher, ob man einen angeben kann, aber man braucht definitiv keinen.
Wenn du einen Mailtransportagent meinen solltest: Stimmt, den braucht man. Ist aber auf so gut wie jedem Linux-System installiert. Es koennte sogar sein, dass PHP selbst einen mit an Bord hat.
Uebrigens ist der vierte Parameter optional, dort kann man nicht nur "From", sondern mehrere Metadaten des Mailheaders angeben.

Ich denke, bitmunchers Erklaerung ist die plausibelste. Auch wenn ich nicht nachgeschaut habe, welche Parameter die mail()-Funktion erwartet, denke ich, dass du die Funktion richtig benutzt.
Alternativ koennte es daran liegen, dass die mail()-Funktion in der php.ini deaktiviert wurde.
Wenn du error_reporting auf E_ALL und display_errors auf ON stehen hast, gibt dir dein Script eine Fehlermeldung bei deaktivierter mail()-Funktion aus.

Da diese Einstellungen in Entwicklungsumgebungen ueblich sind, denke ich es liegt an der dynamischen IP.

Um sicherzugehen kannst du den Netzdatenfluss mit Wireshark oder aehnlichen Programmen ueberpruefen. Ist allerdings recht aufwaendig, nur um dann festzustellen, dass es nicht an PHP beziehungsweise deinem Script liegt.
 
Original von snoggo
Falsch. Man braucht keinen Mail-Server um die Nachricht zu verschicken. Ich bin mir nicht sicher, ob man einen angeben kann, aber man braucht definitiv keinen.
Wenn du einen Mailtransportagent meinen solltest: Stimmt, den braucht man. Ist aber auf so gut wie jedem Linux-System installiert. Es koennte sogar sein, dass PHP selbst einen mit an Bord hat.

Im Umgangssprachlichen ist ein Mailserver ein MTA, also ein Server, der via SMTP Nachrichten verschicken kann und genau das benötigt man um mittels lokaler Skripte eine Mail zu verschicken. PHP selbst bringt keinen mit, beschwert sich meines Wissens aber, wenn der eingestellt MTA (per Default localhost) nicht erreichbar ist.
 
...und ich will jetzt nichts falsches behaupten (nutze seit langer Zeit nur noch Debian-Minimal-Installation und zieh mir das, was ich brauche von den Repos aus dem Netz...) aber in der Debian-Standard-Installation (ich geh mal von Debian aus, schließlich hat Dawen dies als OS in seinem Profil) wird exim4 mit Konfiguration auf "lokale Zustellung" installiert.
Es können also mails an root@localhost geschickt werden, aber nach draußen wird dann wohl nix gehen...

(berichtigt mich, falls dem nicht mehr so ist...)

@Dawen: installier dir, falls noch nicht vorhanden, mal mutt (Konsolen-Mail-Client) und lass die Mail an benutzername@localhost gehen... öffne dann unter entsprechendem Benutzer mal mutt und schau, ob die Mail angekommen ist...
 
Zurück
Oben