Wie versende ich eine Mail über die Php Funktion über XAMPP an einem MAC?
Hallo liebe Community,
ich versuche derzeitig über meinen Mac eine E-Mail über die PHP Funktion mail()an mich selbst zu senden, dabei bin ich bei meiner Google suche immer wieder auf die ini.php gestoßen, die bei mir im Ordern etc von htdocs liegt. Wenn ich also in der Datei etwas ändere oder es auch lasse und versuche die mail() Funktion von Php zum laufen zu bringen wird mir keine E-Mail gesendet, eventuell findet sich ja jemand, der mir bei dem Problem helfen kann ;)
3 Antworten
Alexander und Gerd haben das schon richtig erklärt. Um eine Mail versenden musst du Zugang zu einem SMTP Server haben. Mit der mail Funktion und sendmail bist du bist wie ein E-Mail Client wie mit Outlook. Generell gilt das Du bestimmte Daten, Ports und Verschlüsslungen bei den Mailservern einhalten musst. Im Idealfall trägst du die Konfigurationsdatei genau die Daten ein, die Du in den Einstellungen von deinem E-Mail Provider bekommen hast.
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'path/to/PHPMailer/src/Exception.php';
require 'path/to/PHPMailer/src/PHPMailer.php';
require 'path/to/PHPMailer/src/SMTP.php';
$mail = new PHPMailer(true);
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = 'YOUR_GMAIL_EMAIL';
$mail->Password = 'YOUR_GMAIL_PASSWORD';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
Das wäre z.B. für Gmail
Ich nutze gmail über Port 465 mit dem Smtp Server smtp.gmail.com
Und den PHPMailer, sowie Exception und SMTP lege ich in den htdocs von XAMPP ?
Siehst du der Port ist ein anderer. Und du musst natürlich deine eigene gmail Adresse als Absender verwenden.
Das installiert man vorzugsweise mit composer. Du musst nur die Autoloader in das Script einbinden. Aber so etwas müsste auch auf der Website von PHPMailer stehen.
Ich habe bisher folgendes:
<?php
require 'includes/PHPMailer.php';
require 'includes/Exception.php';
require 'includes/SMTP.php';
$mail = new PHPMailer();
$mail->isSMTP();
$mail->SMTPSecure = 'ssl';
$mail->SMTPAuth = true;
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->Username = 'beispiel@gmail.com';
$mail->Password = 'mein Gmail Passwort';
$mail->setFrom('beispiel@gmx.de');
$mail->addAddress('beispiel@gmx.de');
$mail->Subject = 'Hello from PHPMailer!';
$mail->Body = 'This is a test.';
//send the message, check for errors
if (!$mail->send()) {
echo "ERROR: " . $mail->ErrorInfo;
} else {
echo "SUCCESS";
}
?>
Habe auch den PHPMailer über den Composer installiert
An die selbe Stelle, wo ich das andere Passwort hingesetzt habe ?
Also gute Nachricht ich habe es geschafft via Gmail und PHPMailer eine E-Mail zu generieren.
$mail = new PHPMailer();
$mail->SMTPDebug = SMTP::DEBUG_SERVER;
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = 'xxxxxxx@gmail.com';
// Wird in Admin des GoogleKontos erzeugt. App-Passwort
$mail->Password = 'xxxxxxxxxxxxxxx';
$mail->SMTPSecure =PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
$mail->setFrom('xxxxx@gmail.com');
$mail->addAddress('webmaster@xxxxxxx');
$mail->Subject = 'Hello from PHPMailer!';
$mail->Body = 'This is a test.';
//send the message, check for errors
if (!$mail->send()) {
echo "ERROR: " . $mail->ErrorInfo;
} else {
echo "SUCCESS";
}
Er führt es bei mir leider dennoch nicht aus
Folgendes hast du auch verwendet, oder ?
require_once 'vendor/autoload.php';
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'includes/PHPMailer.php';
require 'includes/Exception.php';
require 'includes/SMTP.php';
includes ist der Ordner, den ich für Exception, SMTP und PHPMAiler nutze
Ja, nur eben an einer anderen Stelle. Mach dich noch mal mit den Namespaces und autoload vertraut. Require brauchst du so dann nicht..
So wie ich das verstanden habe macht der autoloader schon von allein das was ich versuche mit require zu erzeugen, indem der Befehl vom autolaoder die Klassen schon implementiert, stimmt das soweit ?
Das heißt, wenn ich dich und meine Quellen nun richtig verstanden habe, dann kann ich die require aus meinem Quelltext löschen, dann benötige ich nur noch use, um angaben zu machen, welche Dateien ich nutzen möchte, um mich an den Server "anzuhängen"
Für use muss ein Pfad angegeben werden, wo die jeweilige Datei zu finden ist, oder ?
https://www.wikihow.com/Install-PHPMailer
https://www.wikihow.com/Install-PHPMailer#/Image:11182473-7.jpg
Um zu den Ausgangspunkt deiner Frage zu kommen.
Der XAMPP unterstützt die mail() Function intern nur virtuell.
Das heißt die Mail wird zwar als Text erzeugt und abgespeichert um sie danach Überprüfen zu können.
Ein echter Mailversand findest so nicht statt.
Dazu müsstest du echte Mailserver einstellen
Wie versende ich eine Mail über die Php Funktion über XAMPP an einem MAC?
https://sebastianviereck.de/xampp-mails-verschicken-von-localhost-mit-sendmail/
Alex
Ich habe das versucht es will einfach nicht klappen, daher habe ich das mit dem PHPMailer versucht, aber auch das will mir nicht gelingen, wenn jemand eine Lösung weiß, die mir helfen könnte das besser zu verstehen, dann würde ich mich sehr freuen :)