Hallo,
ich bin in Puncto PHP leider noch ein ziemlicher Anfänger. Ich versuche gerade verzweifelt PHPMailer auf eine meiner Webseiten (Webhosting Sommer 2019) zu integrieren.
Vorgeschichte:
ich hatte eine funktionierende Kontaktform mit einem sehr einfachen PHP-Skript. Das hat auch so lange funktioniert, bis ich die ganze Geschichte in Cloudlfare eingebunden habe. danach ging dann keine Email über die Kontaktform keine Emails mehr raus. Habe daraufhin die Seite erstmal wieder von Cloudflare runtergenommen und die standard Netcup Nameserver und DNS-Records wieder eingetragen. Emails gingen aber immer noch nicht. Habe dann gelesen, dass man für solche Sachen besser PHPMailer nehmen sollte. -->
Was bisher geschah:
Da ich keine Ahnung habe, wie ich PHPMailer über composer auf dem Webhosting installieren soll, habe ich die Dateien direkt von Github runtergeladen und im /httpdocs/ Unterordner der entsprechenden Webseite installiert. Das macht offensichtlich keinen Sinn, da ich die entsprechenden PHP-Dateien (PHPMailer.php, SMTP.php und Exception.php) in einen include_path schieben muss (soweit ich das verstehe). Also habe ich folgende Verzeichnisstruktur angelegt: /httpdocs/resources/includes/ <-- dort habe ich die PHP-Dateien von PHPMailer reingepackt. den Includepath habe ich für die entsprechende Webseite wie folgt eingetragen: .:/httpdocs/resources/includes/
Wo ich jetzt stehe:
Sobald ich meine Kontaktform auf meiner HTML-Webseite abschicke und auf die entsprechende PHP-Datei zum verarbeiten sende, bricht mir das ganze ab. Die Fehlermeldungen sagen folgendes:
Warning: require(PHPMailer.php): failed to open stream: No such file or directory in /var/www/vhosts/XXX.XXX.netcup.net/httpdocs/XXX/mail_alternative.php on line 10
Warning: require(PHPMailer.php): failed to open stream: No such file or directory in /var/www/vhosts/XXX.XXX.netcup.net/httpdocs/XXX/mail_alternative.php on line 10
Fatal error: require(): Failed opening required 'PHPMailer.php' (include_path='.:/httpdocs/resources/includes/') in /var/www/vhosts/XXX.XXX.netcup.net/httpdocs/XXX/mail_alternative.php on line 10
Unten angefügt ist meine PHP-Datei zum verarbeiten der Mails.
Nun meine Frage: Was mache ich Falsch
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
require 'PHPMailer.php';
require 'SMTP.php';
require 'Exception.php';
$mail = new PHPMailer(true);
// Get the form fields, removes html tags and whitespace.
$name = strip_tags(trim($_POST["name"]));
$name = str_replace(array("\r","\n"),array(" "," "),$name);
$email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL);
$message = trim($_POST["message"]);
$find_us = trim($_POST["find-us"]);
try {
//Server settings
$mail->isSMTP(); // Send using SMTP
$mail->Host = 'xxxx.netcup.net'; // Set the SMTP server to send through
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'info@xxxxx.de'; // SMTP username
$mail->Password = 'xxxxx'; // SMTP password
$mail->SMTPSecure = 'PHPMailer::ENCRYPTION_STARTTLS'; // Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` also accepted
$mail->Port = 587; // TCP port to connect to
//Recipients
$mail->setFrom($email, $name);
$mail->addAddress('info@xxx.de', 'xx xx'); // Add a recipient
// Content
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'Neue Anfrage von: ' + $name;
$mail->AltBody = $message;
$mail->send();
header("Location: /index.html?success=1#kontakt");
}catch (Exception $e) {
header("Location: /index.html?success=-1#kontakt");
};
?>
Display More