60734
Goto Top

PHP email versenden OHNE SMTP Server

Hi,

ich würde gerne mit PHP emails versenden, habe aber leider keinen SMTP Server zur verfügung und will auch ehrlich gesagt keinen installieren.

Jetzt habe ich mir gedacht, könnte man doch einfach den SMTP Server umgehen und gibt die eMail sozusagen direkt beim POP - Postfach ab (Der SMTP macht ja auch nix anderes, außer emails von PHP annehmen und an das POP - Postfach weiterleiten).

Gibt es ein PHP Skript, wo diesen SMTP Server sozusagen schon integriert hat, damit die email direkt über z.B. fsockopen beim Postfach abgegeben wird?


Gruss
Simpsons4ever

Content-ID: 111404

Url: https://administrator.de/contentid/111404

Ausgedruckt am: 27.11.2024 um 22:11 Uhr

Dani
Dani 14.03.2009 um 15:46:34 Uhr
Goto Top
Hi Simpsons4ever,
falls du die Lösung findest, sag Bescheid, face-smile

Ganz ehrlich - lese mal genau nach, für was POP da ist und für was SMTP.


Grüße,
Dani
StefanKittel
StefanKittel 14.03.2009 um 15:53:26 Uhr
Goto Top
Hallo,

gibts doch in PHP. nennt sich "Mail".

if (mail("p2s@skittel.de", "P2S Registrierung Kopie ($p_Name, $p_Email, $p_Company, $p_Options)", $emailText, $emailHeader))

und hier kurz zur SMTP+POP Frage: http://www.p2s-handbuch-de.skittel.de/grundlagen/detailiert/miteigeneme ...

Stefan
mrtux
mrtux 14.03.2009 um 17:21:34 Uhr
Goto Top
Hi !

Ich denke das geht schon aber seine Formulierung war etwas daneben.

Ich vermute er meint, dass die Mail direkt ins lokale Benutzermailkonto geschrieben wird, so wie Procmail das macht. Das funktioniert dann nur auf dem localhost, was natürlich dann auch nix mit einem POP-Account zu tun hat. Es wird lediglich eine Mail als MSG in den Mailordern des lokalen Users geschrieben.

@Simson habe ich das so richtig verstanden ?

mrtux
StefanKittel
StefanKittel 14.03.2009 um 17:38:12 Uhr
Goto Top
Hallo,

das wäre mit IMAP ja möglich.

Stefan
60734
60734 14.03.2009 um 17:48:08 Uhr
Goto Top
Also: Nochmal zu meiner Frage. Ich weiss, dass es die Funktion mail() in PHP gibt, aber das war nicht meine Frage.
Wenn ich das so richtig verstanden hab mit dem ganzen Mail kram, ist der Weg einer eMail ja in der Regel so:

Die funktion mail() überträgt die eMail an den SMTP Server. Der SMTP Server legt die eMail in einem POP-Postfach ab. Und da liegt sie dann drinnen, bis der Benutzer die eMail vom POP-Postfach abholt.

Dann ist meine Frage so: Warum kann man den SMTP nicht einfach umgehen und legt die eMail nicht direkt im POP-Postfach ab, so dass der Benutzer sie dann dort abholen kann.

Bei mir würde das dann sozusagen so funktionieren:

4164c672b3089628109ffc74d89db380-tndiagrammemailmiteigenenserverohnesmarthost_740


Gruss Simpsons4ever
StefanKittel
StefanKittel 14.03.2009 um 19:54:24 Uhr
Goto Top
Hallo,

SMTP -> Datenbank MailServer -> POP/IMAP

- Das Protokoll POP kann Mails nur abrufen
- Das Protokoll IMAP kann Mail zwar schreiben aber nur mit Benutzername und Kennwort (und ist in PHP so (glaub ich) nicht definiert. Da müßte man dann eine Library kaufen für).

SMTP ist halt das Protokoll für eingehende Mails.

Es ist technisch kein Problem ein Protokoll zu erstellen welches die direkte Zustellen in ein Postfach regelt.
Aber warum? SMTP macht das schon gut und ist standardisiert.
Ein weiteres Protokoll würde dann nicht von Jedem unterstüzt.

Was willst Du eigentlich machen?

Stefan
60734
60734 15.03.2009 um 11:55:29 Uhr
Goto Top
Ich will von PHP aus einfach eMails versenden ohne dass ich den Weg über einen SMTP Server gehen muss, sozusagen die eMail direkt ins Postfach zustelle.

Ich möchte sozusagen den lokalen SMTP emulieren, und die eMail direkt abgeben.
StefanKittel
StefanKittel 15.03.2009 um 13:03:32 Uhr
Goto Top
Hallo,

OK. Also SMTP ist für Dich OK, aber Du willst die Email nicht dem Mail-Server Deines Anbieter übergeben sondern Sie direkt an den Empfänger zustellen.
Ich glaube ich weiß auch warum. Der Mail-Befehl sagt, mir zumindest, nie ob die Mail übermittelt werden konnte, da er das ja noch gar nicht weiß. Man bekommt dann nur später einen Unzustellbarkeitsbericht.

Dafür benötigt man SMTP mit PHP.
Schau mal hier: http://email.about.com/od/emailprogrammingtips/qt/et073006.htm
Habs aber nicht ausprobiert. Ist übrigends der 1. Link bei Google wenn man PHP und SMTP eingibt...

Ein Problem könnte bei dieser Sache aber durchaus sein, dass der empfangende Server Deine Mail als Spam klassifiziert und ablehnt oder in einen Spam Ordner verschiebt. Die IP Des WebServer steht garantiert nicht in der Liste der erlaubten Versand-Server.

Ich weiß ja nicht was Du erreichen willst, ich verwende Links in der Mails die den Versand der eignetlichen Mail steuern. So überprüfe ich die Adresse.

Stefan
Enclave
Enclave 18.03.2009 um 21:30:22 Uhr
Goto Top
Zitat von @StefanKittel:
- Das Protokoll IMAP kann Mail zwar schreiben aber nur mit
Benutzername und Kennwort (und ist in PHP so (glaub ich) nicht
definiert. Da müßte man dann eine Library kaufen
für).

http://php.net/imap ?

Wenn es ohne SMTP gehen würde, würde man vermutlich keinen nehmen.
Was man aber evtl. versuchen kann: Einen externe SMTP zu nehmen, dann müsstest du keinen installieren wobei ich nicht verstehe wo da das Problem liegt. Nur ein SMTP ist doch ne Sache von 5 Minuten...


Mfg

Enclave
godlie
godlie 26.03.2009 um 16:30:02 Uhr
Goto Top
Ihr habt alle nicht so ganz gerafft was der junge will face-smile
Er will über fsockopen eine mail an einen SMTP reichen, damit der dort angebrachte delivery agent ( dovecot, courier, exchange ) die mail an das Benutzerpostfach bringt und dort ablegt.

$smtp_server = fsockopen("smtp.mydomain.com", 25, $errno, $errstr, 30);  
if(!$server_smtp)
{
	// We have an error, do something
	exit;
}
fwrite($smtp_server, "HELO its_me\r\n");  
fwrite($smtp_server, "MAIL FROM:<me@mydomain.com>\r\n");  
fwrite($smtp_server, "RCPT TO:<myfreind@hisdomain.com>\r\n");  
fwrite($smtp_server, "DATA\r\n");  
fwrite($smtp_server, "Received: from mydomain.com by hisdomain.com ; Thu, 03 Jan 2006 12:33:29 -0700\r\n");  
fwrite($smtp_server, "Date: Thu, 03 Jan 2006 12:33:22 -0700\r\n");  
fwrite($smtp_server, "From: Me <me@mydomain.com>\r\n");  
fwrite($smtp_server, "Subject:  The Next Meeting of the Board\r\n");  
fwrite($smtp_server, "To: myfreind@hisdomain.com\r\n");  
fwrite($smtp_server, "\r\nMyFreind:\r\nHow are you ?\r\n\r\n             Me.\r\n");  
fwrite($smtp_server, ".\r\nQUIT\r\n");  

Wenn du jetzt beim fsockopen den smtp des gewünschten zielservers einträgst dann bist du schon mal gut dabei.

grüße
60734
60734 28.03.2009 um 00:44:42 Uhr
Goto Top
so hab mir das grad mal alles durchgelesen. Ich habe daraus jetzt mal ein beispielcode entwickelt. Siehe hier, geht aber noch net wirklich face-sad

<?php

function mailx($to,$betreff,$text,$from) {
$server = explode("@",$to);  
$server = $server[1];
getmxrr ($server,$hosts);
$server = $hosts;


$smtp_server = fsockopen($server, 25, $errno, $errstr, 30);
if(!$server_smtp)
{
	// We have an error, do something
	exit;
}
fwrite($smtp_server, "HELO its_me\r\n");  
fwrite($smtp_server, "MAIL FROM:$from\r\n");  
fwrite($smtp_server, "RCPT TO:$to\r\n");  
fwrite($smtp_server, "DATA\r\n");  
fwrite($smtp_server, "Received: from mydomain.com by hisdomain.com ; Thu, 03 Jan 2006 12:33:29 -0700\r\n");  
fwrite($smtp_server, "Date: Thu, 03 Jan 2006 12:33:22 -0700\r\n");  
fwrite($smtp_server, "From: Me $from\r\n");  
fwrite($smtp_server, "Subject: $betreff\r\n");  
fwrite($smtp_server, "To: $to\r\n");  
fwrite($smtp_server, "\r\n$text\r\n\r\n            \r\n");  
fwrite($smtp_server, ".\r\nQUIT\r\n");  

fclose($smtp_server);
}
mailx("ich@web.de","test","test","ich <ich@gmx.de>");  
?>

Das müsste so doch dann gehen, oder?