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

php mail() mal klappt, mal nicht ?!?

F

Fishmasta

Guest
Hallo, ich versuche jetzt schon etwas mein Mailskript ans Laufen zu bekommen.
Mal klappt es, mal nicht.
Ich weiß im Moment echt nicht mehr weiter.
Hoffe ihr könnt mir helfen.

- Habe ne E-mail-Adresse bei nem Provider: [email protected]
- Auf meinen PC läuft der Apache-, MySQL- und Mercury-Server

Die php.ini sieht wie folgt aus:
Code:
[mail function]
smtp_port = 25
sendmail_from = [email protected]

Mein Skript sieht wie folgt aus:
PHP:
$empfaenger = $_POST['email'];
$absender = '[email protected]';
$betreff = 'Bestätigung ihres Accounts';
// Template mit dem Mailbody laden und für den Versand vorbereiten
$mailtext = file_get_contents( '../mailtext.txt' );
// Platzhalter mit den Benutzereingaben ersetzen
$mailtext = str_replace( '###HIER_KLICKEN###', '<a href="http://localhost/the/validate_account.php?checksumme='.$md5confirm.'">HIER KLICKEN</a>', $mailtext );
$antwortan = '[email protected]';
 
// Mail Header erstellen
$mailheader  = "From: $absender\r\n";
$mailheader .= "Reply-To: $antwortan\r\n";
$mailheader .= "MIME-Version: 1.0\r\n";
$mailheader .= "Content-Type: text/html; charset=UTF-8\r\n";
$mailheader .= "Content-Transfer-Encoding: 8bit\r\n";
 
// Email versenden
mail($empfaenger, $betreff, $mailtext, $mailheader);
echo 'E-Mail wurde gesendet';

Was läuft falsch?
Mal hat der Mercury-Server sehr lange zum antworten gebraucht, dann kamen die Mails mal wieder sofort.
Im Momemnt funktioniert es so wie oben aufgeführt garnicht mehr.
Fehlermeldung:
Code:
[B]Warning[/B]:  mail() [[URL="http://localhost/thefilmnetwork/skripte/function.mail"]function.mail[/URL]]: Failed to Receive in [B]D:\Programme\xampp\htdocs\thefilmnetwork\skripte\registrieren.php[/B] on line [B]82[/B]

[B]Fatal error[/B]:  Maximum execution time of 30 seconds exceeded in [B]D:\Programme\xampp\htdocs\thefilmnetwork\skripte\registrieren.php[/B] on line [B]83[/B]

Zwischendurch wurden immer mal Anpassungen vorgenommen.
Jetzt weiß ich nicht mehr weiter.

Ich hoffe ihr könnt mir sagen, warum mein Skript nicht funktioniert.
VIELEN DANK!
 
Die mail-Funktion von PHP solltest du vergessen und besser eine Klasse w.z.B. den phpMailer benutzen, damit klappt das dann auch.
 
Hallo,

hate mal das gleiche wenn deine E-Mail an die schickst eine echte ist hast ein Problem da fast alle Provider das Blocken wenn einer eine Mail aus localhost ohne feste ip verschicken möchte.
Selbst wenn das klappt ist oft das Problem das vorher E-Mails abrufen musst damit die Authentifizierung klappt.
Was hast bei SMTP zu stehen, da muss der ziel Provider rein.

habe mal mein altes gesucht und gefunden für GMX :O)
Code:
[mail function]
; For Win32 only.
;SMTP = localhost
SMTP = mail.gmx.de
smtp_port = 25
; For Win32 only.
;sendmail_from = [email protected]
sendmail_from = deine@gmx_adresse.de
Cheffchen
 
Ich habe die php.ini jetzt nochmal wie folgt überarbeitet:
Code:
[mail function]
SMTP = smtp.provider.de
smtp_port = 25
sendmail_from = [email protected]

Außerdem habe ich folgendes Skript im Internet gefunden:
PHP:
<?php
/*
From http://www.html-form-guide.com 
This is the simplest emailer one can have in PHP.
If this does not work, then the PHP email configuration is bad!
*/
$msg="";
if(isset($_POST['submit']))
{
    /* ****Important!****
    replace [email protected] below 
    with an email address that belongs to 
    the website where the script is uploaded.
    For example, if you are uploading this script to
    www.my-web-site.com, then an email like
    [email protected] is good.
    */

    $from_add = "[email protected]"; 

    $to_add = "[email protected]"; //<-- put your yahoo/gmail email address here

    $subject = "Test Subject";
    $message = "Test Message";
    
    $headers = "From: $from_add \r\n";
    $headers .= "Reply-To: $from_add \r\n";
    $headers .= "Return-Path: $from_add\r\n";
    $headers .= "X-Mailer: PHP \r\n";
    
    
    if(mail($to_add,$subject,$message,$headers)) 
    {
        $msg = "Mail sent OK";
    } 
    else 
    {
        $msg = "Error sending email!";
    }
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html>
<head>
    <title>Test form to email</title>
</head>

<body>
<?php echo $msg ?>
<p>
<form action='<?php echo htmlentities($_SERVER['PHP_SELF']); ?>' method='post'>
<input type='submit' name='submit' value='Submit'>
</form>
</p>


</body>
</html>

Das Skript hat ein Mal funktioniert.
2 Minuten später bekomme ich wieder die Fehlermeldung
Code:
[B]Warning[/B]:  mail() [[URL="http://localhost/function.mail"]function.mail[/URL]]: Failed to Receive

phpMailer habe ich erst garnicht zum laufen bekommen.
Dort erhalte ich auch die Failed to Receive Fehlermeldung.

Habt ihr noch Ideen?

edit:
Die Mercury-Konsole des SMTP Client gibt 421 invalid sender domain aus.
Google konnte mir nicht weiter helfen.
Wisst ihr wie ich den Fehler beheben kann?

nochmal edit:
auf grund von der seite KLICK
würde ich sagen, dass es am provider liegt, da meine mails auch von 1und1 sind.
gerade kam wieder eine mail durch.
aber einige minuten verzögert.
wie kann ich mein skript denn jetzt am besten auf funktionalität testen?
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

mir scheint das dies ein reines Server einstellungs ding zu sein, das hat nichts mit PHP zu tun also bist im falschen Forum.
Server ist halt für prof die wissen was sie machen und darunter zähle ich mich mal nicht :O).

Es gibt doch genügent tuts wie man Server richtig einrichtet die musst halt volgen und dannn vielleicht im Server Forum fragen wenn an einer stelle hängst.

Cheffchen
 
Ich kann dir trotzdem nur den phpMailer empfehlen, mit dem du dann per SMTP über deinen 1&1-Mail-Account die Mails raushaust und nicht über einen lokalen Mailserver.
 
Zurück
Oben