# Mails via SMTL versenden



## perle93 (1. November 2010)

Hallo, nach einen Providerwechsel kann ich nun nicht mehr meine php Mails versenden, sondern muss auf SMTL umstellen. Ich weiss nun gar nicht wie das geht, was muss ich da genau reinschreiben?
So einfach wie möglich, das ist mein Code für die Mails, die ich bisher hatte im php, also auch recht einfach:
	
	
	



```
+<?php


$sendTo = "mail@live.de";
$subject = "Bestellung";




$headers = "From: " . $_POST["name"] ." <" . $_POST["email"] .">\r\n";
$headers .= "Reply-To: " . $_POST["email"] . "\r\n";
$headers .= "Return-path: " . $_POST["email"];

$message = $_POST["message"];


mail($sendTo, $subject, $message, $headers);

?>
```


----------



## perle93 (1. November 2010)

Falls ich im falschen Forum bin, bitte ich um Schiebung des Threats, danke


----------



## ComFreek (1. November 2010)

Kannst du mir mal einen Link geben, wo SMTL beschrieben ist?

Bei Google finde ich gar nichts.


----------



## deepthroat (1. November 2010)

Hi.

Ich vermute mal sie meint SMTP (?)

@perle93:  "php smtp"

Wie dem auch sei, PHP Themen gehören ins PHP Forum 

Gruß


----------



## ComFreek (1. November 2010)

Daran dachte ich auch schon, aber sie zwei mal SMTL geschrieben, deshalb bin ich davon ausgegangen, dass sie das auch meint.


----------



## perle93 (1. November 2010)

ohoh...,-)) mein Fehler,-)) Wie komme ich denn darauf******! Also ihr habt recht, SMTP******

Es ist ein Formular, als ich gegooglet habe kamen zwar Infos, bin mir aber nicht sicher, weil das nicht für ein Formular war, sondern allgemein.



```
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Unbenanntes Dokument</title>
</head>

<body>

<?php

/* connect to the smtp server */
$sock = fsockopen("smtp.my.com", 25, $errno, $errstr, 30);

/* check result */
if (!$sock)
{
    echo "$errstr ($errno)<br />\n";
}

else
{
    fwrite($sock, "HELO client.my.com\r\n");
    fwrite($sock, "MAIL FROM:<mal@live.de>\r\n");
    fwrite($sock, "RCPT TO:<friend@his.com>\r\n");
    fwrite($sock, "DATA\r\n");
    fwrite($sock, "Received: from my.com by his.com ; Mon, 31 Aug 2009 12:11:00 -0700\r\n");
    fwrite($sock, "From: Me <mail@live.de>\r\n");
    fwrite($sock, "Subject: Bestellung\r\n");
    fwrite($sock, "To: friend@his.com\r\n");
    fwrite($sock, "\r\n Vielen Dank für Ihre Bestellung. Wir werden uns schnellstmöglich um Ihr Anliegen kümmern.\r\n\r\nMe.\r\n");
    fwrite($sock, ".\r\nQUIT\r\n");
}
?>



</body>
</html>
```


----------



## ComFreek (1. November 2010)

Guck doch einfach mal bei Wikipedia, da ist der Aufbau des Protokolls beschrieben.

Im "Notfall" ist auch ein RFC verfügbar: #821


----------



## perle93 (1. November 2010)

Ja, ähnliches habe ich heute bereits gelesen, aber liesst das auch ein Formular aus?


----------



## ComFreek (1. November 2010)

SMTP ist nur ein Übertragungsprotokoll für Emails.

Willst du etwa die Email mit den Daten aus einem Formular befüllen?


----------



## perle93 (1. November 2010)

Das Formular beinhaltet Namen, Email und ein Textfeld.


----------



## ComFreek (2. November 2010)

Ja, mit $_GET oder $_POST auslesen und per SMTP-Protokoll verschicken.

Du hast doch oben schon einen Ansatz, allerdings - laut Wikipedia - muss man auf die Antwort des Servers warten!
Schau dir mal das Beispiel #3 bei PHP.net an: Click!


----------



## perle93 (2. November 2010)

So, doch wieder aktuell... man, das nervt vielleicht.

Und das ist dann was anderes als mit php?


----------



## ComFreek (3. November 2010)

Was meinst du jetzt, anders als was?

perle93, zuerst musst du die Formulardaten auslesen, danach Anfragen (SMTP-Protokoll!) an den Server schicken.
Bitte erkläre doch genau, was für Probleme du hast, dann können wir dir entsprechend helfen.


----------



## perle93 (3. November 2010)

Mein Provider liesst nur oder lässt nur smtp Datenverkehr zu. Wenn ich nun wie ich oben mal geschrieben habe den Code nehme und irgendwie anpasse, dann klappt das doch mit dem Server, oder? Denn ich habe gesehen, das der smtp in einem PHP Code ist. Deswegen habe ich "Angst", das es dann nicht klappt und ich alles umsonst erstellt habe.


----------



## ComFreek (3. November 2010)

Ich denke bei der Programmierung ist alles einen Verusch wert 

Allerdings wird beim obigen Skript nicht auf die Antwort des Servers gewartet.
Ich denke, das könnte man mit [phpf]stream_get_contents[/phpf] lösen, wobei ich mir nicht sicher bin, ob das funktioniert.
Versuche doch erst mal folgendes (nicht getestet!):

```
<?php

/* connect to the smtp server */
$sock = fsockopen("smtp.my.com", 25, $errno, $errstr, 30);

/* check result */
if (!$sock)
{
    echo "$errstr ($errno)<br />\n";
}

else
{
    fwrite($sock, "HELO client.my.com\r\n");
    stream_get_contents($sock);
    fwrite($sock, "MAIL FROM:<mal@live.de>\r\n");
    stream_get_contents($sock);
    fwrite($sock, "RCPT TO:<friend@his.com>\r\n");
    stream_get_contents($sock);
    fwrite($sock, "DATA\r\n");
    stream_get_contents($sock);
    fwrite($sock, "Received: from my.com by his.com ; Mon, 31 Aug 2009 12:11:00 -0700\r\n");
    fwrite($sock, "From: Me <mail@live.de>\r\n");
    fwrite($sock, "Subject: Bestellung\r\n");
    fwrite($sock, "To: friend@his.com\r\n");
    fwrite($sock, "\r\n Vielen Dank für Ihre Bestellung. Wir werden uns schnellstmöglich um Ihr Anliegen kümmern.\r\n\r\nMe.\r\n");
    stream_get_contents($sock);
    fwrite($sock, ".\r\nQUIT\r\n");
}
?>
```
Wenn das klappt, kannst du die Formulardaten einbauen.


----------



## perle93 (3. November 2010)

Ok, werde mein Glück versuchen. Aber da ist wieder PHP im Spiel, das geht dennoch?


----------



## deepthroat (4. November 2010)

Hi.

Warum wollt ihr das denn unbedingt selbst programmieren? 

http://freshmeat.net/projects/smtpclass/

Gruß


----------



## perle93 (4. November 2010)

wollen wir nicht, wir müssen, da kein Geld da ist,-((


----------



## deepthroat (4. November 2010)

perle93 hat gesagt.:


> wollen wir nicht, wir müssen, da kein Geld da ist,-((


Schonmal etwas von Open Source gehört?

Außerdem meinte ich: warum nutzt ihr (du und ComFreek) nicht einfach fertige Klassen zum SMTP Versand und programmiert das alles nochmal von Grund auf?

Erstmal suchen!


----------



## ComFreek (4. November 2010)

@deepthroat:

Ich gehöre nicht zu perle93, nur mal so 
Ich bin nur im Forum registriert ​


----------



## perle93 (4. November 2010)

ich weiss nicht warum, aber ich kannte es nicht, vielleicht lag es daran und (Achtung) ComFreek hilft mir und macht solche Sachen scheinbar öfter und kann es auch sehr gut. Ist nicht unser erstes Mal,-).


----------



## perle93 (9. November 2010)

So, wie sieht es aus, machen wir weiter?


----------



## ComFreek (15. November 2010)

Was ist denn jetzt dein Problem genau?
Ich möchte mir jetzt den ganzen Thread nochmals durchlesen 

Willst du fertige Klassen benutzen oder alles selber programmieren?


----------



## olqs (15. November 2010)

Hast du die Möglichkeit pear Module nachzuinstallieren?

Dann wär vielleicht das praktisch:
http://pear.php.net/manual/en/package.networking.net-smtp.intro.php

Gruss
olqs


----------



## perle93 (15. November 2010)

Ich brauche dieses Skript für ein Formular, das aus einer Flashdatei versendet werden soll. Die fertigen Skripte sind vielleicht gut, aber ich habe Null Plan, was ich da nehmen soll...

Danke euch


----------



## ComFreek (16. November 2010)

Entscheide dich für irgend eins, das vielleicht gut kling.
Wieso schreibst du hier in tutorials.de rein und nicht in irgend ein anderes? Genauso ist es mit fertigen Skripten 
Bei den meisten (hoffe ich mal) gibt es eine Dokumentation (hoffe du kannst Englisch) und vielleicht auch ein Tutorial.


----------

