Ich habe das jetzt mal ausprobiert mit PHP Mailer. Das ganze aber noch mit localhost (mit XAMPP installiert) auf meinem Windows-Rechner.
Zum Verständnis. Ich habe für meine Webseite ja eine "info@domain.de" Email-Adresse. Also meine Hauptadresse. Da ich im PHP-Script hier mein Passwort nicht haben möchte, habe ich eine weitere Email-Adresse eingerichtet. Sie lautet dann "web@domain.de". Bei Netcup habe ich diese erstellt und natürlich ein Passwort hinterlegt.
Hier mal ein Teil meines PHP-Script (gefunden und angepasst im Internet):
Ich nennen diese mal "send.php". Am Anfang den Scripts stehen noch diese "use" und "require" Sachen von PHPMailer. Aber das brauche ich hier ja nicht hinzufügen.
$debug = true;
try{
// Instanz der PHPMailer-Klasse erstellen
$mail = new PHPMailer($debug);
if($debug){
// gibt einen ausführlichen log aus
$mail->SMTPDebug = SMTP::DEBUG_SERVER;
}
// Authentifikation mittels SMTP
$mail->isSMTP();
$mail->SMTPAuth = true;
// Login
$mail->Host = "xxx.netcup.net";
$mail->Port = 465;
$mail->Username = "web@domain.de";
$mail->Password = "blabla";
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->setFrom('web@domain.de', 'Absendername');
$mail->addAddress('info@domain.de', 'Domainname');
$mail->CharSet = 'UTF-8';
$mail->Encoding = 'base64';
$mail->isHTML(false);
$mail->Subject = 'Neuer Kommentar';
$mail->Body = $c;
$mail->AltBody = $c;
$mail->send();
}catch (Exception $e){
echo "Message could not be sent. Mailer Error: ".$e->getMessage();
}
Alles anzeigen
Ich möchte natürlich erreichen (bei diesem Beispiel), dass die Daten einer <textarea> (in $c stehen die Daten von der textarea ; $mail->Body = $c) in der Kommentarfunktion meines Blogs, dann eine neue EMail mit dem Betreff "Neuer Kommentar" an "info@domain.de" gesendet wird. Diese "web@domain.de" wird nicht selbst überprüft und sollte ja nur für das Script hier sein (Thema Passwort). Das ganze funktioniert durch AJAX, sprich in einer DIV-Box ist erst mal das HTML-Formular. Per Javascript verarbeite ich den "Senden" Button und mit AJAX wird diese "send.php" aufgerufen. Wenn dort dann ein "echo" von PHP erfolgt, wird diese DIV-Box mit dem HTML-Formular überschrieben und das "Echo"-Zeugs wird dort ausgespuckt.
Jedoch funktioniert das ganze nicht.
Fehlermeldung: "Fatal error: Maximum execution time of 120 seconds exceeded in C:\Xampp\htdocs\...\SMTP.php on line 1281"
Die php.ini hat nur folgenden Eintrag für die Mail-Sachen:
sendmail_path = C:\xampp\mailtodisk\mailtodisk.exe
So funktioniert das auch, wenn ich z.B. mit der eigenen PHP-Mail Funktion etwas verschicke. Das kommt dann zumindest in einer Text-Datei an, die bei XAMPP unter dem Verzeichnis "mailoutput" abgelegt wird. Da sich der PHPMailer ja irgendwie einloggt (ich gebe ja nicht umsonst "Host", "Port", "Username" und "Passwort" an), denke ich, dass hier noch das Problem besteht? Hier ist meine Denkgrenze *lach. Also mir ist nicht ganz klar, ob über localhost, hier trotzdem auf dem Host von Netcup das ganze stattfindet (ich wirklich eine Mail an "info@domain.de" bekomme) oder wie bei der mail() PHP Funktion die Sache simuliert wird und eine Text-Datei in das Verzeichnis "mailoutput" von XAMPP abgelegt wird.
Aber wie gesagt... alles erst mal noch mit diesem Timeout-Fehler.
Jemand eine Idee?