PHP-sendmail in einer XAMPP-Installation konfigurieren
Um die Funktion von beispielsweise Kontaktnachrichten oder auch Benutzerkommentaren via PHP-sendmail-Funktion vom lokalen Web-Server aus vor Veröffentlichung zu testen, muss XAMPP konfiguriert werden.
Wir zeigen Ihnen, was zu tun ist.
Die gesamte Projektumgebung einer Website besteht aus drei Teilen: der Entwicklungsumgebung (also einem lokalen Arbeitsverzeichnis irgendwo im File-System), der Testumgebung (einem lokalen Webserver; localhost) und der Produktionsumgebung (die Remote-Webserver im WWW, auf die Besucher schließlich zugreifen). Der Arbeitsablauf gestaltet sich demnach so: entwickeln, publizieren und testen auf localhost, publizieren auf dem Webserver der Website.
Die Testumgebung, den lokalen Web-Server haben wir mit XAMPP eingerichtet.
Web-Seiten nutzen gerne die PHP-Funktion sendmail, um Benutzereingaben oder automatisierte Nachrichten an den Web-Administrator oder den Content-Manager zu senden. Dafür nutzen Web-Server Funktionen, die von Web-Hosting-Plattformen bereitgestellt werden. Sie haben bereits mindestens einen E-Mail-Account bei einem Provider, den Sie dafür nutzen? Dann ist das kein Problem: Es funktioniert!
Anders für Ihren lokalen Web-Server: Da muss die Funktion sendmail zunächst konfiguriert werden. Wir zeigen Ihnen hier, wie die sendmail-Funktion in der XAMPP-Umgebung zu konfigurieren ist.
Es sind vier Arbeitsschritte nötig:
Uns haben etliche Anfragen von Benutzern erreicht, die unter Windows 8 ihre E-Mails zwar scheinbar erfolgreich senden konnten, aber keine empfangen haben.
Unter Windows 8 (ggf. auch bei älteren Versionen) müssen zusätzlich die Ausführungsrechte für das XAMPP-Programm sendmail.exe gesetzt werden. Wie das geht, erklären wir weiter unten am Ende dieser Beschreibung. Jetzt sind zunächst die Zugangsdaten zu besorgen und die ini-Dateien anzupassen.
Es empfiehlt sich, für diesen Zweck eine eigene E-Mail-Adresse einzurichten. Die meisten Web-Hoster bieten in den Paketen neben dem Webspace mit den URLs zahlreiche, frei belegbare E-Mail-Accounts an. Nutzen Sie einen für Nachrichten aus der Testumgebung ihrer Web-Projekte.
Notieren Sie sich die Zugangsdaten. Sie benötigen:
Erstellen Sie eine Sicherheitskopie der Datei »xampp\php\php.ini« unter einem neuen Namen (z. B. »xampp\php\php.ini.bup«).
Finden Sie in der Datei »xampp\php\php.ini« den Abschnitt, der mit »[mail function]« eingeleitet wird. Nehmen Sie folgende Anpassungen vor:
Anmerkung: Die hellgrauen Kommentarzeilen dienen der Erläuterung an dieser Stelle und sind in Ihrer originalen Datei nicht zu finden. Die roten Textteile sind anzupassen.
Tipp: Schreiben Sie Zeilen, die Sie ändern möchten, neu! Lassen Sie die originalen Zeilen stehen, kommentieren Sie sie nur aus, in dem Sie ein Semikolon (";") an den Zeilenanfang setzen.
[mail function] ; SMTP-Adresse des Providers Ihres E-Mail-Accounts eintragen ; SMTP = localhost SMTP = smtp.domain ; Vorgegebene SMTP-Port-Nummer eintragen ; smtp_port = 25 smtp_port = port-number ; Absendername eintragen, idealer Weise ist das der Name des Accounts sendmail_from =Website@localhost ; Wenn die E-Mail an einen E-Mail-Account geschickt werden soll, ; aktivieren Sie diese Zeile (Kommentar-Zeichen entfernen): ; sendmail_path = »\«\xampp\sendmail\sendmail.exe\« -t« ; Wenn die E-Mail stattdessen nur einfach in das lokale Verzeichnis ; \xampp\mailoutput auf Festplatte geschrieben werden soll, ; aktivieren sie diese Zeile (Kommentar-Zeichen entfernen): ; sendmail_path = »\xampp\mailtodisk\mailtodisk.exe«
Erstellen Sie eine Sicherheitskopie der Datei »xampp\sendmail\sendmail.ini« unter einem neuen Namen (z. B. »xampp\sendmail\sendmail.ini.bup«).
Finden Sie in der Datei »xampp\sendmail\sendmail.ini« den Abschnitt, der mit »[sendmail]« eingeleitet wird. Nehmen Sie folgende Anpassungen vor:
[sendmail] ; you must change mail.mydomain.com to your smtp server, ; Setzen Sie hier also die tatsächliche SMTP-Adresse ein: smtp_server=smtp.domain ; smtp port (normally 25) ; Setzen Sie hier die tatsächliche SMTP-Port-Nummer ein: smtp_port=port-number ;default_domain=mydomain.com ; Setzen Sie hier den tatsächlichen Domain-Namen ein: default_domain=domain.de ; if your smtp server requires authentication, ; modify the following two lines ; Setzen Sie hier die Werte ein, wenn das Konto Authentifikation verlangt, ; löschen Sie dann die einleitenden Kommentarzeichen ";": ; auth_username={nur, wenn vom Provider verlangt} ; auth_password={nur, wenn vom Provider verlangt} ; if your smtp server uses pop3 before smtp authentication, modify the ; following three lines. do not enable unless it is required. ; Setzen Sie nur dann Werte ein, wenn es der Provider verlangt! ; pop3_server={pop3-Adresse des Providers} ; pop3_username={E-Mail-Adresse des Accounts} ; pop3_password={Passwort des Accounts} ; force the sender to always be the following email address ; Wenn Sie es mögen, dass der Absender eindeutig ist: ; force_sender={E-Mail-Adresse des gewünschten Kontos}
Fertig! Sie können nun die neu eingerichtete E-Mail-Funktion testen:
Unter Windows XP, Windows Vista und Windows 7 sollte die beschriebene Vorgehensweise (Konfigurieren der ini-Dateien) bereits zum Erfolg führen. Anders unter Windows 8. Gesendete E-Mails erreichen womöglich den Empfänger nicht.
Wenn das bei Ihnen der Fall ist, sollten Sie die Ausführungsrechte des Programms sendmail.exe verändern.
Einzustellen sind: »Kompatibilitätsmodus Windows XP SP3« und »Ausführen als Administrator«. Das geht so:
Danach sollten Sie E-Mails senden und empfangen können.
Um die PHP-sendmail-Funktion im Apache-Server zu aktivieren, waren vier Arbeitsschritte nötig:
Befindet sich der E-Mail-Account bei einem Service-Provider, können Sie z. B. mit Microsoft Outlook ein E-Mail-Konto einrichten, in dem Sie die Nachrichten abholen.
Viel Spaß mit »E-Mail from Web-Site@localhost«!