• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Email kommt nicht an - Strato

Beach117

Neues Mitglied
Hallo zusammen,

wurde über die Suche leider nicht fündig und stehe vor einem Problem welches sicherlich schonmal aufgetreten ist!
Ich habe ein Template erworben, welches ebenso ein Kontaktformular enthält :

Code:
	<div id="inner-content" class="contact-information">			
		<div class="overline"><h2>Kontakt aufnehmen</h2></div>			
		<p>Bei Bestellungen, Fragen oder Anregungen nehmen Sie doch bitte Kontakt mit mir auf.</p>


	
		<form action="send.php" id="contact-form" method="post">
		
			<div>
				<input name="name" type="text" class="requiredField" />
				<label>Name<em>*</em></label>
			</div>
								
			<div>	
				<input name="email" type="text" class="requiredField email" />
				<label>Email<em>*</em></label>		
			</div>
			
			<div>
				<textarea name="message" rows="50" cols="20"></textarea>		
			</div>
								
			<div>
				<input value="Absenden  &raquo;" type="submit" class="button submit grey" />
			</div>
		</form><!--END form ID contact-form-->


Und in der send.php file sieht es so aus :

PHP:
$email_to = "Eigeneemailadresse";$name = $_POST["name"];$email = $_POST["email"];$phone = $_POST["phone"];$url = $_POST["url"];$message = $_POST["message"];$text = "NAME: $name<br>         EMAIL: $email<br>		 PHONE: $phone<br>		 URL: $url<br>		          MESSAGE: $message";$headers = "MIME-Version: 1.0" . "\r\n"; $headers .= "Content-type:text/html; charset=utf-8" . "\r\n"; $headers .= "From: <$email>" . "\r\n";mail($email_to, "Message", $text, $headers);?>

Laut documentation soll ich einfach nur $email_to meine Adresse eingeben und alles andere funktioniert von alleine. Leider kommt bei meinen Tests keine Email an :?.
Liegt das an Strato oder übersehe ich einfach nur irgendwas? Bin in PHP auch nicht der fitteste ;).

Dank Euch im Voraus.
 
Werbung:
Verwende eine fertige Mailer-Klasse w.z.B. den phpMailer und alles wird gut :D
 
Werbung:
Das bedeutet ich lösche diesen Part hier raus und ersetze ihn mit dem Mailer ?!



<?php




$email_to = "Eigen Email Adresse";
$name = $_POST["name"];
$email = $_POST["email"];
$phone = $_POST["phone"];
$url = $_POST["url"];
$message = $_POST["message"];
$text = "NAME: $name<br>
EMAIL: $email<br>
PHONE: $phone<br>
URL: $url<br>
MESSAGE: $message";
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html; charset=utf-8" . "\r\n";
$headers .= "From: <$email>" . "\r\n";
mail($email_to, "Message", $text, $headers);
?>
 
So ungefähr. Aber wie schon gesagt, beachte die Beipiele und das Tutorial
 
Werbung:
Oder anders gesagt, das Zusammensetzen der Variable $header und den Aufruf der Funktion mail() brauchst Du nicht. Die Variablen die davor gefüllt werden, kannst Du mit der PHP-Mailer-Klasse weiterbenutzen.
 
Nachdem mit netterweise von thuemmy geholfen worden ist, stehe ich jetzt weiterhin vor dem Problem das trotz abgeänderter Code keine Testmail ankommt.
Ich habe die class.phpmailer.php / class.pop3.php und die class.smtp.php Datei auf meinen Server gezogen, sie liegen auf der selben Ebene wie di index Datei.



In meiner send.php sieht es mittlerweile so aus:

Code:
<!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=iso-8859-1" />


<title>Air - online personal portfolio</title>


<!-- Styleswitch JavaScript Files -->
<link rel="alternate stylesheet" type="text/css" media="screen" title="color-cream" href="css/color-cream.css" />
<link rel="alternate stylesheet" type="text/css" media="screen" title="color-light" href="css/color-light.css" />
<link rel="alternate stylesheet" type="text/css" media="screen" title="color-dark" href="css/color-dark.css" />
<script type="text/javascript" src="javascript/styleswitch.js"></script>


</head>


<body>








<?php
$email_to = "TEST EMAIL ADRESSE Angegeben";
$name = $_POST["name"];
$email = $_POST["email"];
$message = $_POST["message"];
$text = "NAME: $name<br>
         EMAIL: $email<br>
         MESSAGE: $message";
// Ab hier kommt die phpmailer-Klasse ins Spiel :)
require("class.phpmailer.php");
$mail = new PHPMailer();
$mail->CharSet = 'utf-8';
$mail->SetLanguage ("de");
$mail->IsSMTP();          // Wir wollen per SMTP versenden
$mail->Host = "smtp.strato.de";     // SMTP-Host
$mail->SMTPAuth = true;      // Wir wollen die SMTP-Authentifizierung
$mail->Username = "Hier hab ich die Kundennummer von STRATO eingegeben. ";            // SMTP Username bei <a href='http://www.webhostlist.de/provider/137-STRATO-AG/' class='whl'>STRATO</a> ist es die Email-Adresse
$mail->Password = "Hier hab ich das Passwort eingegeben, das man zum LOGIN bei Strato braucht";      // SMTP Passwort bei <a href='http://www.webhostlist.de/provider/137-STRATO-AG/' class='whl'>STRATO</a> ist es das Email-Passwort
$mail->From = "[email protected]";             // Absender eMail
$mail->AddAddress($email_to);    // Empfänger eMail
$mail->IsHTML(false);     // HTML-Mail Ja/Nein (true/false)
$mail->Subject = "Kontaktformular anlage11.de";            // Betreff
$mail->Body    = $message;            // Der Inhalt/Text der eMail
if(!$mail->Send()){
   echo "eMail konnte nicht versendet werden.<br />";
   echo "Mailer Error: " . $mail->ErrorInfo;
   exit;}
echo "eMail wurde versendet";
?>




</body>
</html>


Des weiteren sieht es in meinem contact.html so aus:

Code:
<div id="inner-content" class="contact-information">	
		
		<div class="overline"><h2>Kontakt aufnehmen</h2></div>			
		<p>Bei Bestellungen, Fragen oder Anregungen nehmen Sie doch bitte Kontakt mit mir auf.</p>


	
		<form action="send.php" id="contact-form" method="post">
		
			<div>
				<input name="name" type="text" class="requiredField" />
				<label>Name<em>*</em></label>
			</div>
								
			<div>	
				<input name="email" type="text" class="requiredField email" />
				<label>Email<em>*</em></label>		
			</div>
								
			
			
			<div>
				<textarea name="message" rows="50" cols="20"></textarea>		
			</div>
								
			<div>
				<input value="Absenden  &raquo;" type="submit" class="button submit grey" />
			</div>
		</form><!--END form ID contact-form-->


Ich weiss leider nicht wo der Fehler liegt und bin mal wieder mit meinem Wissen am Ende angekommen.
Ich würde mich über weitere Hilfe sehr freuen.
Vielen Dank im Voraus.

Simone.
 
Hallo Simone,

schade dass es nicht funktioniert. Aber bei <a href='http://www.webhostlist.de/provider/137-STRATO-AG/' class='whl'>STRATO</a> wird nicht die Kundennummer und das Kundenlogin-Passwort für die SMTP-Authentifizierung benutzt, sondern die Email-Adresse und das Email-Passwort. Wenn Du das nicht weißt, dann kannst Du Dir ja im Kundenbereich ein spezielles Passwort, z.B. PHPMailer oder wie auch immer, für das Versenden der Kontaktanfrage anlegen.

Mich wundert allerdings, dass der PHPMailer keine Fehlermeldung bringt. Oder doch, und Du hast nur vergessen sie hier zu posten?

Ganz vergessen. Im PHPMailer hast Du die Möglichkeit den Debug-Modus einzuschalten, und zwar so:
PHP:
$mail->SMTPDebug = true;
Dann bekommst Du sämtliche Aktionen angezeigt.
 
Zuletzt bearbeitet:
Werbung:
Hach je! Wunderbar, jetzt kommen die Emails durch. Einzige Kleinigkeit - der Name & Email den man im Kontaktformular einträgt, der wird leider nicht mit übergeben. Somit kann man dann natürlich auch nur schwer antworten. Der Absender ist dann immer "[email protected]" ...

Aber schonmal tausend Dank dafür das es überhaupt klappt! ;Jump
 
Bis gerade eben dachte ich immer, dass sich SMTP unter anderem dadurch auszeichnet, dass die Absenderemail mit der SMTP-Authentifizierung zusammen passen muss, aber anscheinend nicht, wie ich jetzt eben selbst getestet habe. Dann sollte der Codeausschnitt mit dem Absender so aussehen:
PHP:
$mail->From = $email;             // Absender eMail
$mail->FromName = $name;                // Absender Name
Aber im Email-Body bekommst Du die Infos schon? Wenn nicht, dann ist an der Übergabe irgendwas falsch und dann wird wohl auch keine Email ankommen.
 
Werbung:
Bis gerade eben dachte ich immer, dass sich SMTP unter anderem dadurch auszeichnet, dass die Absenderemail mit der SMTP-Authentifizierung zusammen passen muss, aber anscheinend nicht, wie ich jetzt eben selbst getestet habe. Dann sollte der Codeausschnitt mit dem Absender so aussehen:
PHP:
$mail->From = $email;             // Absender eMail
$mail->FromName = $name;                // Absender Name
Aber im Email-Body bekommst Du die Infos schon? Wenn nicht, dann ist an der Übergabe irgendwas falsch und dann wird wohl auch keine Email ankommen.


Wenn ich den teil dann einfüge und es mit dem hier austausche dann bleibt die Email wieder aus :?:

PHP:
$mail->From = "[email protected]";             // Absender eMail
$mail->AddAddress($email_to);    // Empfänger eMail



Als Informationen bekomme ich genau das hier:

Bildschirmfoto 2013-06-03 um 18.43.06.jpg


Danke Dir! ;-)
 
Jetzt hilft nur noch ein debuggen von Grund auf und da zitiere ich gerne hin und wieder mal den User bdt600
Da hilft wohl nur:

Richtig debuggen

1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
Auf jeden Fall solltest Du Dir mit print_r mal den Inhalt von $_POST ausgeben lassen, also so:
PHP:
print_r($_POST);
 
Zurück
Oben