Wie versende ich eine Mail über die Php Funktion über XAMPP an einem MAC?

3 Antworten

Von Experte EinAlexander bestätigt

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.

Woher ich das weiß:Berufserfahrung – Web Developer bei einem mittelständischen Portalbetreiber

timo343245 
Beitragsersteller
 17.07.2023, 12:52

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 :)

LeBonyt  17.07.2023, 12:58
@LeBonyt
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

timo343245 
Beitragsersteller
 17.07.2023, 13:00
@LeBonyt

Ich nutze gmail über Port 465 mit dem Smtp Server smtp.gmail.com

timo343245 
Beitragsersteller
 17.07.2023, 13:02
@LeBonyt

Und den PHPMailer, sowie Exception und SMTP lege ich in den htdocs von XAMPP ?

LeBonyt  17.07.2023, 13:03
@timo343245

Siehst du der Port ist ein anderer. Und du musst natürlich deine eigene gmail Adresse als Absender verwenden.

timo343245 
Beitragsersteller
 17.07.2023, 13:09
@LeBonyt

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";

}

?>

timo343245 
Beitragsersteller
 17.07.2023, 13:18
@timo343245

Die erste Zeile heißt nun :

require_once 'vendor/autoload.php';

LeBonyt  17.07.2023, 13:24
@LeBonyt

$mail->setFrom('beispiel@gmx.de');

Muss deine gmail E-Mail enthalten.

timo343245 
Beitragsersteller
 17.07.2023, 13:25
@timo343245

Habe auch den PHPMailer über den Composer installiert

timo343245 
Beitragsersteller
 17.07.2023, 13:32
@timo343245

Ich bekomme immer noch folgenden Fehler :

500 Internal Server Error

LeBonyt  17.07.2023, 14:06
@LeBonyt

500 Internal Server Error heisst das Du einen schweren Syntaxfehler hast.

LeBonyt  17.07.2023, 14:08
@LeBonyt

Ich habe mich mal aufgeschlaut, die Anbindung an den SMTP Server Gmail ist doch komplizierter als ich gedacht habe. Verwende mal dein App Kennwort.

  $mail->SMTPDebug = SMTP::DEBUG_SERVER;
timo343245 
Beitragsersteller
 17.07.2023, 14:20
@LeBonyt

An die selbe Stelle, wo ich das andere Passwort hingesetzt habe ?

LeBonyt  17.07.2023, 14:32
@timo343245

Also gute Nachricht ich habe es geschafft via Gmail und PHPMailer eine E-Mail zu generieren.

LeBonyt  17.07.2023, 14:39
@LeBonyt
$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";
}
timo343245 
Beitragsersteller
 17.07.2023, 15:18
@LeBonyt

Er führt es bei mir leider dennoch nicht aus

timo343245 
Beitragsersteller
 17.07.2023, 15:24
@timo343245

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';

timo343245 
Beitragsersteller
 17.07.2023, 15:25
@timo343245

includes ist der Ordner, den ich für Exception, SMTP und PHPMAiler nutze

LeBonyt  17.07.2023, 17:00
@timo343245

Ja, nur eben an einer anderen Stelle. Mach dich noch mal mit den Namespaces und autoload vertraut. Require brauchst du so dann nicht..

timo343245 
Beitragsersteller
 18.07.2023, 12:29
@LeBonyt

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 ?

LeBonyt  18.07.2023, 12:44
@timo343245

genau Dreh und Angelpunkt ist funktion spl_autoload_register.

timo343245 
Beitragsersteller
 18.07.2023, 12:49
@LeBonyt

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"

timo343245 
Beitragsersteller
 18.07.2023, 12:53
@timo343245

Für use muss ein Pfad angegeben werden, wo die jeweilige Datei zu finden ist, oder ?

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

Woher ich das weiß:eigene Erfahrung
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


timo343245 
Beitragsersteller
 16.07.2023, 14:47

Das ist doch für Windows, oder nicht ?