2016-08-09 118 views
1

Ich habe eine PHP Mail-Klasse mit der Methode registerNewUser erstellt. Grundsätzlich, wie mein Titel sagt, die Methode kehrt wahr, wenn es falsch zurückgeben sollte, weil ich keine E-Mail erhalte. Kann mir jemand erklären, wenn ich etwas falsch mache? (Bitte kommentieren Sie nicht, dass ich dem Benutzer ein unverschlüsseltes Passwort sende. Dieses unverschlüsselte Passwort ist ein 25-stelliges alphanumerisches Zufalls-Passwort. Sicherheit ist hier kein Thema) Ich möchte keine Art von Framework verwenden. Ich möchte das mit der Hand programmieren, bitte sagen Sie mir nicht, PHPMailer oder etwas Ähnliches zu verwenden.Wie kann ich XAMPP für SMTP ausgehende E-Mail auf einem UNIX-Rechner einrichten

Edit: Ich finde heraus, dass ich XAMPP einrichten muss, um ausgehende E-Mails mit SMTP zu senden. Diese Frage ist kein Duplikat, da jede andere Frage auf jeder anderen Frage Windows-basiert ist und selbst dann keine Schritt-für-Schritt-Anleitung zum Einrichten von SMTP auf einem XAMPP-Localhost-Server enthält.

Hier ist der Code:

<?php 
class Mail { 

    private $headers; 

    public function __construct() { 
    // Setting Up Mail Headers 
    $this->headers = "MIME-Version: 1.0 \r\n"; 
    $this->headers .= "Content-type: text/html; charset=iso-8859-1 \r\n"; 
    $this->headers .= "From: Admin @ NAStepsOnline <[email protected]>\r\n"."X-Mailer: php"; 
    } 

    /** 
    * @desc     Mails the User from registration email. 
    *       This function should only be called through 
    *       registerNew() within the user.class file 
    * @param str $userName First Name of the user 
    * @param str $userEmail Email address of the user 
    * @param str $userPass Password of user (UNENCRYPTED) 
    * @return bool   True = Mail Sent Sucessfully 
    *       False = Mail Not Sent 
    */ 
    public function registerNewUser($userName, $userEmail, $userPass) { 
    // Define Subject Line 
    $subject = "Thanks " . $userName . " for Registering On NAStepsOnline.com"; 
    // Setting Up Message to the User 
    $msg = "<html><body>"; 
    $msg .= $userName . " Thanks for registering at NAStepsOnline.com<br><br>"; 
    $msg .= "Here is your password (case sensitive): " . $userPass . "<br><br>"; 
    $msg .= "Please use the login form to login.<br>"; 
    $msg .= "To assign a sponsor to your account please visit the Profile Settings page and click on My Sponsor.<br>"; 
    $msg .= "If you have any problems please contact us using the Contact Us page.<br><br>"; 
    $msg .= "Thanks,<br>The Team @ NAStepsOnline.com"; 
    $msg .= "</body></html>"; 

    // Mailing the user Registration 
    $mail = mail($userEmail, $subject, $msg, $this->headers); 
    if($mail) { 
     return true; 
    } else { 
     return false; 
    } 
    } 
} 
+0

Haben Sie Spam eingecheckt? und sind Sie auf lokalen oder Live-Server. – shubham715

+0

Localhost XAMPP-Server, der auf einer Unix-Plattform ausgeführt wird, hat den Spam-Ordner überprüft. Nichts. –

+0

funktioniert nicht auf dem lokalen Server. Dafür musst du smtp verwenden. Sie können phpmailer verwenden, um E-Mails vom lokalen Computer zu senden. – shubham715

Antwort

1

Zuerst installieren Sie eine sendmail

sudo apt-get install sendmail

In der php.ini Datei [mail function] finden und es wie folgt ändern:

SMPT=smtp.gmail.com 
    smtp_port=587 
    [email protected] 
    sendmail_path=/usr/sbin/sendmail -t -i 
  • Windows-

    Jetzt bearbeiten Sie die sendmail.ini:

    [sendmail] 
    smtp_server=smtp.gmail.com 
    smtp_port=587 
    error_logfile=error.log 
    debug_logfile=debug.log 
    [email protected] 
    auth_password=gmail-password 
    [email protected] 
    
  • Linux

    Sobald Sie sendmail installiert haben Sie folgenden Befehl ausführen können: sudo sendmailconfig. Antwort [Y] zu allen Fragen.

    Knüpfen Sie neue Verzeichnis:

    sudo mkdir -m 700 /etc/mail/authinfo && cd /etc/mail/authinfo 
    

    neue Datei erstellen:

    sudo touch ./gmail-auth 
    

    Fügen Sie folgenden Inhalt:

    AuthInfo: "U:YOUR ACCOUNT NAME" "I:YOUR GMAIL EMAIL ADDRESS" "P:YOUR GMAIL PASSWORD" 
    

    Erstellen neuer Hash-Karte:

    makemap hash gmail-auth < gmail-auth 
    

    öffnen /etc/mail/sendmail.mc und über erste MAILER Definition add:

    define(`SMART_HOST',`[smtp.gmail.com]')dnl 
    define(`RELAY_MAILER_ARGS', `TCP $h 587')dnl 
    define(`ESMTP_MAILER_ARGS', `TCP $h 587')dnl 
    define(`confAUTH_OPTIONS', `A p')dnl 
    TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl 
    define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl 
    FEATURE(`authinfo',`hash -o /etc/mail/authinfo/gmail-auth')dnl 
    

    Konfiguration neu erstellen und sendmail-Dienst

    sudo make -C /etc/mail && sudo service sendmail restart 
    
  • Homebrew

    installieren sendmail mit brew install sendmail neu starten, um die Installation zu erhalten dir Folge ausführen g Befehl: brew info sendmail. Führen Sie die gleichen Konfigurationsschritte von Linux Teil dieser Antwort.

+0

Ich kann die Datei sendmail.ini nicht finden. Wo befindet es sich auf der Unix-Plattform? –

+0

Versuchen Sie einfach folgenden Befehl auszuführen: 'sudo sendmailconfig'. Die Ini-Datei kann nur unter Windows gefunden werden. – nix9

+0

Können Sie Ihre ursprüngliche Antwort erneut bearbeiten, um die Änderungen für das Unix-Betriebssystem widerzuspiegeln? Ich bin verwirrt, weil die Mail-Funktion in php.ini viele Dinge nur für Win32 kommentiert kommentiert. : D Bitte und danke! –