2016-08-09 3 views
1

私はregisterNewUserメソッドを使ってPHP Mailクラスを作成しました。基本的に私のタイトルは、メソッドがtrueを返していると言います。私は電子メールを受け取っていないので、falseを返すべきです。私は何か間違っていると誰かが説明できますか? (この暗号化されていないパスワードは、25文字のアルファベット数字でランダムに生成されたパスワードです。セキュリティは問題ありません)いくつかのタイプのフレームワークは使用したくありません。私はこれを手作業でコーディングしたいので、PHPMailerなどを使用するように教えてください。UNIXマシン上でXAMPP for SMTPの送信メールを設定するには

編集:SMTPを使用して送信メールを送信するためにXAMPPを設定する必要があることがわかりました。この質問は、他のすべての質問に対する回答がすべてWindowsベースであり、XAMPPローカルホストサーバーでSMTPを設定する方法についてのステップバイステップの指示を提供しない場合もあります。

<?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

スパムをチェックインしましたか?ローカルサーバーまたはライブサーバーにいますか。 – shubham715

+0

Unixプラットフォーム上で実行されているLocalhost XAMPPサーバーで、迷惑メールフォルダを確認しました。何もない。 –

+0

ローカルサーバでは動作しません。そのためにはsmtpを使用する必要があります。 phpmailerを使用してローカルマシンからメールを送信することができます。 – shubham715

答えて

1

まず[mail function]を見つけるphp.iniファイルでsendmail

sudo apt-get install sendmail

をインストールすると、以下のように変更します:ここで

はコードだ

SMPT=smtp.gmail.com 
    smtp_port=587 
    [email protected] 
    sendmail_path=/usr/sbin/sendmail -t -i 
    :あなたは以下のコマンドを実行することができます sendmailをインストールしたら

    [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の

    :の

  • のWindows

    は今sendmail.iniを編集します。すべての質問に[Y]と答えてください。

    新しいディレクトリを作成します。内容以下

    sudo touch ./gmail-auth 
    

    挿入:

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

    は、新しいファイルを作成します

    makemap hash gmail-auth < gmail-auth 
    

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

    新しいハッシュマップを作成します。

    オープン/etc/mail/sendmail.mcと最初MAILER定義アドオン上記:

    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 
    

    設定を再構築して再起動

    sudo make -C /etc/mail && sudo service sendmail restart 
    
  • 自作sendmailサービス

    インストールを得るためにbrew install sendmailsendmailをインストールします。 dirはfollowinを実行するgコマンド: brew info sendmail。この回答の一部分をからに変更してください。

+0

sendmail.iniファイルが見つかりません。どこがUNIXプラットフォームにありますか? –

+0

次のコマンドを実行してみてください: 'sudo sendmailconfig'。 iniファイルはWindows上にのみ存在します。 – nix9

+0

Unix OSの変更を反映するために元の回答を再編集できますか?私はphp.ini内のメール機能がWin32だけのことをコメントしているので混乱しています。 :Dありがとう、ありがとう! –

関連する問題