PHP-Skript zum Herstellen einer Verbindung zu einem SMTP-Server und zum Senden von E-Mails unter Windows 7
Das Senden einer E-Mail von PHP in Windows ist ein Minenfeld mit Fallstricken und Kopfkratzen. Ich werde versuchen, Sie durch eine Instanz zu führen, in der ich sie unter Windows 7 und PHP 5.2.3 unter (IIS) Internet Information Services-Webserver zum Laufen gebracht habe.
Ich gehe davon aus, dass Sie kein vorgefertigtes Framework wie CodeIgniter oder Symfony verwenden möchten, das E-Mail-Sendefunktionen enthält. Wir senden eine E-Mail von einer eigenständigen PHP-Datei. Ich habe diesen Code unter der Codeigniter-Haube (unter System / Bibliotheken) erworben und ihn so geändert, dass Sie ihn einfach in diese Email.php-Datei einfügen können und er sollte einfach funktionieren.
Dies sollte mit neueren Versionen von PHP funktionieren. Aber du weißt nie.
Schritt 1: Sie benötigen einen Benutzernamen / ein Passwort für einen SMTP-Server:
Ich verwende den SMTP-Server, smtp.ihostexchange.net
der bereits für mich erstellt und eingerichtet wurde. Wenn Sie dies nicht haben, können Sie nicht fortfahren. Sie sollten in der Lage sein, einen E-Mail-Client wie Thunderbird, Evolution und Microsoft Outlook zu verwenden , um Ihren SMTP-Server anzugeben, und dann E-Mails über diesen Server senden zu können.
Schritt 2: Erstellen Sie Ihre Hello World-E-Mail-Datei:
Ich gehe davon aus, dass Sie IIS verwenden. Erstellen Sie also eine Datei mit dem Namen index.php unter C:\inetpub\wwwroot
und fügen Sie diesen Code dort ein:
<?php
include("Email.php");
$c = new CI_Email();
$c->from("FromUserName@foobar.com");
$c->to("user_to_receive_email@gmail.com");
$c->subject("Celestial Temple");
$c->message("Dominion reinforcements on the way.");
$c->send();
echo "done";
?>
Sie sollten in der Lage sein, diese index.php zu besuchen, indem Sie in einem Browser zu localhost / index.php navigieren. Es werden Fehler ausgegeben, da Email.php fehlt. Stellen Sie jedoch sicher, dass Sie es zumindest über den Browser ausführen können.
Schritt 3: Erstellen Sie eine Datei mit dem Namen Email.php
:
Erstellen Sie eine neue Datei mit dem Namen Email.php unter C:\inetpub\wwwroot
.
Kopieren Sie diesen PHP-Code in Email.php:
https://github.com/sentientmachine/standalone_php_script_send_email/blob/master/Email.php
Da es viele Arten von SMTP-Servern gibt, müssen Sie manuell an den Einstellungen oben auf herumspielen Email.php
. Ich habe es so eingerichtet, dass es automatisch funktioniert smtp.ihostexchange.net
, aber Ihr SMTP-Server ist möglicherweise anders.
Zum Beispiel:
- Setzen Sie die Einstellung smtp_port auf den Port Ihres SMTP-Servers.
- Stellen Sie die Einstellung smtp_crypto auf die Anforderungen Ihres SMTP-Servers ein.
- Stellen Sie $ newline und $ crlf so ein, dass sie mit dem kompatibel sind, was Ihr SMTP-Server verwendet. Wenn Sie eine falsche Auswahl treffen, ignoriert der SMTP-Server Ihre Anfrage möglicherweise ohne Fehler. Ich benutze \ r \ n, für Sie ist vielleicht
\n
erforderlich.
Der verknüpfte Code ist zu lang, um als Stackoverflow-Antwort eingefügt zu werden. Wenn Sie ihn bearbeiten möchten, hinterlassen Sie hier oder über github einen Kommentar, und ich werde ihn ändern.
Schritt 4, stellen Sie sicher, dass auf Ihrer php.ini die SSL-Erweiterung aktiviert ist:
Suchen Sie Ihre PHP.ini-Datei und kommentieren Sie die aus
;extension=php_openssl.dll
So sieht es aus:
extension=php_openssl.dll
Schritt 5: Führen Sie die gerade erstellte Datei index.php in einem Browser aus:
Sie sollten die folgende Ausgabe erhalten:
220 smtp.ihostexchange.net Microsoft ESMTP MAIL Service ready at
Wed, 16 Apr 2014 15:43:58 -0400 250 2.6.0
<534edd7c92761@summitbroadband.com> Queued mail for delivery
lang:email_sent
done
Schritt 6: Überprüfen Sie Ihre E-Mails und Ihren Spam-Ordner:
Besuchen Sie das E-Mail-Konto für user_to_receive_email@gmail.com und Sie sollten eine E-Mail erhalten haben. Es sollte innerhalb von 5 oder 10 Sekunden eintreffen. Wenn Sie dies nicht tun, überprüfen Sie die auf der Seite zurückgegebenen Fehler. Wenn das nicht funktioniert, versuchen Sie, Ihr Gesicht auf der Tastatur von Google zu zerdrücken, während Sie singen: "Die Arbeit im Lebensmittelgeschäft ist nicht so schlecht."