Email Verification (not being sent)

Discussion in 'PHP' started by naopublic, Oct 4, 2012.

  1. #1
    As the title states, I am unable to get the email to send out. Right now it is on xampp and not on an actual webhost.

    This is the code.
        // If the Register form has been submitted    
        $err = array();
        
        if(strlen($_POST['username'])<4 || strlen($_POST['username'])>32)
        {
            $err[]='Your username must be between 3 and 32 characters!';
        }
        
        if(preg_match('/[^a-z0-9\-\_\.]+/i',$_POST['username']))
        {
            $err[]='Your username contains invalid characters!';
        }
        
        if(!checkEmail($_POST['email']))
        {
            $err[]='Your email is not valid!';
        }
        
        if(!count($err))
        {
            // If there are no errors
            
            $pass = substr(md5($_SERVER['REMOTE_ADDR'].microtime().rand(1,100000)),0,6);
            // Generate a random password
            
            $_POST['email'] = mysql_real_escape_string($_POST['email']);
            $_POST['username'] = mysql_real_escape_string($_POST['username']);
            // Escape the input data
            
            
            mysql_query("    INSERT INTO members(user,pass,email,regIP,dt)
                            VALUES(
                            
                                '".$_POST['username']."',
                                '".md5($pass)."',
                                '".$_POST['email']."',
                                '".$_SERVER['REMOTE_ADDR']."',
                                NOW()
                                
                            )");
            
            if(mysql_affected_rows($link)==1)
            {
                send_mail(    'hello@goodpixie.com',
                            $_POST['email'],
                            'Thank you for joining GoodPixie! - Your New Password',
                            'Your password is: '.$pass);
    
    
                $_SESSION['msg']['reg-success']='We sent you an email with your new password!';
            }
            else $err[]='This username is already taken!';
        }
    
    
        if(count($err))
        {
            $_SESSION['msg']['reg-err'] = implode('<br />',$err);
        }    
        
        header("Location: index.php");
        exit;
    }
    Code (markup):
    At the start included is function.php

    if(!defined('INCLUDE_CHECK')) die('You are not allowed to execute this file directly');
    
    function checkEmail($str)
    {
        return preg_match("/^[\.A-z0-9_\-\+]+[@][A-z0-9_\-]+([.][A-z0-9_\-]+)+[A-z]{1,4}$/", $str);
    }
    
    
    
    
    function send_mail($from,$to,$subject,$body)
    {
        $headers = '';
        $headers .= "From: $from\n";
        $headers .= "Reply-to: $from\n";
        $headers .= "Return-Path: $from\n";
        $headers .= "Message-ID: <" . md5(uniqid(time())) . "@" . $_SERVER['SERVER_NAME'] . ">\n";
        $headers .= "MIME-Version: 1.0\n";
        $headers .= "Date: " . date('r', time()) . "\n";
    
    
        mail($to,$subject,$body,$headers);
    }
    Code (markup):
     
    naopublic, Oct 4, 2012 IP
  2. happpy

    happpy Well-Known Member

    Messages:
    926
    Likes Received:
    14
    Best Answers:
    0
    Trophy Points:
    120
    #2
    try the script on your webhost.

    most likely your local xampp has no outgoing mail-server with it.
     
    happpy, Oct 4, 2012 IP
  3. naopublic

    naopublic Member

    Messages:
    22
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    31
    #3
    I am not willing to try it on a webhost until the full project is complete. First reason being I do not have a webhost currently, and second I am not willing to get one until it is complete as mentioned before. So I will assume that the xampp does not have an out going mail server. However, is it possible to set one up?
     
    naopublic, Oct 9, 2012 IP
  4. Rukbat

    Rukbat Well-Known Member

    Messages:
    2,908
    Likes Received:
    37
    Best Answers:
    51
    Trophy Points:
    125
    #4
    XAMP has "an outgoing email" - it uses whatever server you tell it to use. You have to set up an email server and your ISP has to allow you to send emails to servers other than its own. (Or you can get a GMail account and use them as your outgoing email server.)
     
    Rukbat, Oct 14, 2012 IP