Page 1 of 1

I COULD REALLY USE SOME HELP - NEWBIE.....

Posted: Sat Feb 02, 2008 12:01 pm
by BLS
OK...so long story short, I got stuck trying to fix a PHP code problem, and I'm a server administrator, not a developer.

I've got a site I moved from one server to another (now hosting it on our server), and a PHP page isn't working.

If you goto http://www.laser1tech.com/contact.htm you'll see a form for contact info.
Fill it out, click submit...you get this:

Warning: mail() [function.mail]: SMTP server response: 501 5.5.4 Invalid Address in C:\Inetpub\wwwroot\Laser1tech\evm_mailer.php on line 592

Seems pretty obvious...even for a dumb server admin like me right? :crazy:

I can't find an email address anywhere in the evm_mailer.php file anywhere.
I would like to know what the problem is, and I'd also like to know how to modify the address it gets sent to.


I'll even post the code here:

Code: Select all

]<?php
 
 
 
class EVM_Mailer {
 
 
 
    var $subject = "";
 
    var $Sendername = "";
 
    var $Senderaddy = "";
 
    var $message = "";
 
    var $Recipients = "";
 
    var $CC_list = "";
 
    var $BCC_list = "";
 
    var $attachments = array(); // filename(as attachment name),location(path+filename of attachment),mime-type
 
    var $ishtml = 0; // 0=text, 1=html
 
 
 
    var $warnings = array();
 
    var $action_msgs = array();
 
    var $error_msgs = array();
 
 
 
    function get_file($filename){ 
 
        if ($fp = fopen($filename, 'rb')) { 
 
            $return = fread($fp, filesize($filename)); 
 
            fclose($fp); 
 
            return $return; 
 
        } else {
 
            return FALSE;
 
        }
 
    }
 
 
 
    function set_subject($msg) {
 
 
 
        if (strlen($msg) > 255) { // Limit subject line to 255 characters
 
            $msg = substr($msg,0,255);
 
            array_push($this->warnings,"Subject line was truncated to 255 characters.");
 
        }
 
 
 
        $this->subject = $msg;
 
        array_push($this->action_msgs,"Subject line set to: " . $msg);
 
 
 
    }
 
 
 
    function set_sender($name,$addy) {
 
 
 
        if (strlen($addy) > 255) { // Limit sender address to 255 characters
 
            $array_push($this->error_msgs,"Sender email address too long. (255 char max)");
 
        } else {
 
            if (strlen($name) != 0) {
 
                $this->Sendername = $name;
 
                array_push($this->action_msgs,"Sender name set to: " . $name);
 
            } else {
 
                array_push($this->action_msgs,"Sender name not set (empty field)");
 
            }
 
            if (strlen($addy) == 0) {
 
                array_push($this->error_msgs,"Sender email address too short or invalid");
 
            } else { // validate email address here
 
                if (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $addy)) {
 
                    array_push($this->error_msgs,"Email address not correctly formatted");
 
                } else {
 
                    array_push($this->action_msgs,"Email address format has been validated");
 
                    $this->Senderaddy = $addy;
 
                }
 
            }
 
        }
 
    }
 
 
 
    function set_message($msg) {
 
 
 
        $this->message = $msg;
 
        array_push($this->action_msgs,"Email message set");
 
 
 
    }
 
 
 
    function add_recipient($name,$addy) {
 
 
 
        if (strlen($addy) > 255) { // Limit sender address to 255 characters
 
            $array_push($this->error_msgs,"Recipient email address too long. (255 char max) " . $addy);
 
        } else {
 
            if (strlen($name) == 0) {
 
                array_push($this->warnings,"No recipient name for " . $addy);
 
            } else {
 
                $build_address = (strlen($name) == 0) ? $name . " " : "";
 
                $build_address .= "<";
 
                $build_address .= $addy;
 
                $build_address .= ">";
 
 
 
                if (count($this->Recipients) > 1) {
 
                    $this->Recipients .= ", " . $build_address;
 
                    array_push($this->action_msgs,"Recipient added: " . $addy);
 
                } else {
 
                    $this->Recipients .= $build_address;
 
                    array_push($this->action_msgs,"Recipient added: " . $addy);
 
                }
 
            }
 
        }
 
    }
 
 
 
    function add_CC($name,$addy) {
 
 
 
        if (strlen($addy) > 255) { // Limit sender address to 255 characters
 
            $array_push($this->error_msgs,"CC email address too long. (255 char max) " . $addy);
 
        } else {
 
            if (strlen($name) == 0) {
 
                array_push($this->warnings,"No CC name for " . $addy);
 
            } else {
 
                $build_address = (strlen($name) == 0) ? $name . " " : "";
 
                $build_address .= "<";
 
                $build_address .= $addy;
 
                $build_address .= ">";
 
 
 
                if (count($this->CC_list) > 1) {
 
                    $this->CC_list .= ", " . $build_address;
 
                    array_push($this->action_msgs,"CC added: " . $addy);
 
                } else {
 
                    $this->CC_list .= $build_address;
 
                    array_push($this->action_msgs,"CC added: " . $addy);
 
                }
 
            }
 
        }
 
    }
 
 
 
    function add_BCC($name,$addy) {
 
 
 
        if (strlen($addy) > 255) { // Limit sender address to 255 characters
 
            $array_push($this->error_msgs,"BCC email address too long. (255 char max) " . $addy);
 
        } else {
 
            if (strlen($name) == 0) {
 
                array_push($this->warnings,"No BCC name for " . $addy);
 
            } else {
 
                $build_address = (strlen($name) == 0) ? $name . " " : "";
 
                $build_address .= "<";
 
                $build_address .= $addy;
 
                $build_address .= ">";
 
 
 
                if (count($this->BCC_list) > 1) {
 
                    $this->BCC_list .= ", " . $build_address;
 
                    array_push($this->action_msgs,"CC added: " . $addy);
 
                } else {
 
                    $this->BCC_list .= $build_address;
 
                    array_push($this->action_msgs,"CC added: " . $addy);
 
                }
 
            }
 
        }
 
    }
 
 
 
    function add_attachment($aname,$location,$mimetype) {
 
 
 
// -----------------------------------------------------------------
 
// The following code checks the mime-type passed to the object vs.
 
// mime-types available to PHP on the server.  If you want to ensure
 
// that all mime-types are accepted, comment out this code.
 
 
 
        if (function_exists('mime_content_type')) {
 
            $vmime = mime_content_type($location);
 
            if ($vmime == $mimetype) {
 
                array_push($action_msgs,"mime type validated");
 
            }
 
        }
 
 
 
 
 
// -----------------------------------------------------------------
 
 
 
 
 
        if ($mimetype == "") {
 
            array_push($this->error_msgs,"No mime type for attachment: " . $location);
 
        }
 
        if ($aname == "") {
 
            array_push($this->error_msgs,"No attachment name specified for attachment: " . $location);
 
        }
 
        if ($location == "") {
 
            array_push($this->error_msgs,"No file name specified for attachment");
 
        } else {
 
            if (!file_exists($location)) {
 
                array_push($this->error_msgs,"attachment: " . $location . " does not exist");
 
            } else {
 
                if (!is_readable($location)) {
 
                    array_push($this->error_msgs,"attachment: " . $location . " could not be read");
 
                } else {
 
                    $toarray = $aname;
 
                    $toarray .= ",";
 
                    $toarray .= $location;
 
                    $toarray .= ",";
 
                    $toarray .= $mimetype;
 
                    array_push($this->attachments,$toarray);
 
                    array_push($this->action_msgs,$location . " set as attachment");
 
                }
 
            }
 
        }
 
    }
 
 
 
    function set_message_type($mtype) {
 
 
 
        switch ($mtype) {
 
            case "text":
 
                $this->ishtml = 0;
 
                array_push($this->action_msgs,"Message body set to text");
 
                break;
 
            case "html":
 
                $this->ishtml = 1;
 
                array_push($this->action_msgs,"Message body set to html");
 
                break;
 
            default:
 
                $this->ishtml = 0;
 
                array_push($this->action_msgs,"Message body set to text");
 
                break;
 
        }
 
    }
 
 
 
    function get_actions() {
 
        $returnstring = "";
 
        if (count($this->action_msgs) > 0) {
 
            for ($i=0;$i<count($this->action_msgs);$i++) {
 
                $returnstring .= $this->action_msgs[$i] . "<br>\n";
 
            }
 
        }
 
        return $returnstring;
 
    }
 
 
 
    function get_warnings() {
 
        $returnstring = "";
 
        if (count($this->warnings) > 0) {
 
            for ($i=0;$i<count($this->warnings);$i++) {
 
                $returnstring .= $this->warnings[$i] . "<br>\n";
 
            }
 
        }
 
        return $returnstring;
 
    }
 
 
 
    function get_errors() {
 
        $returnstring = "";
 
        if (count($this->error_msgs) > 0) {
 
            for ($i=0;$i<count($this->error_msgs);$i++) {
 
                $returnstring .= $this->error_msgs[$i] . "<br>\n";
 
            }
 
        }
 
        return $returnstring;
 
    }
 
 
 
    function send() {
 
$IP = @getenv('HTTP_X_FORWARDED_FOR') ? @getenv('HTTP_X_FORWARDED_FOR') : @getenv('REMOTE_ADDR');
 
        if (count($this->error_msgs) == 0) {
 
 
 
            $boundary = '=_'.md5(uniqid(rand()).microtime()); 
 
 
 
            $headers = "MIME-Version: 1.0\r\n";
 
            $headers .= "Date: ". date("r",time()) . "\r\nFrom: ";
 
            $headers .= ($this->Sendername == "") ? "" : $this->Sendername . " ";
 
            $headers .= "<";
 
            $headers .= $this->Senderaddy;
 
            $headers .= ">[{$IP}]\r\n";
 
            $headers .= "To: ";
 
            $headers .= $this->Recipients;
 
            $headers .= "\r\n";
 
            if (strlen($this->CC_list) > 0) {
 
                $headers .= "CC: ";
 
                $headers .= $this->CC_list;
 
                $headers .= "\r\n";
 
            }
 
            if (strlen($this->BCC_list) > 0) {
 
                $headers .= "BCC: ";
 
                $headers .= $this->BCC_list;
 
                $headers .= "\r\n";
 
            }
 
            $headers .= "Content-Type: multipart/mixed; boundary=\"" . $boundary . "\"\r\n";
 
            $headers .= "Content-Transfer-Encoding: 8bit\r\n";
 
 
 
            $meat = "--$boundary\r\n";
 
            if ($this->ishtml == 0) {           
 
                $meat .= "Content-Type: text/plain; charset=\"utf-8\"\r\n";
 
            }
 
            if ($this->ishtml == 1) {
 
                $meat .= "Content-Type: text/html; charset=\"utf-8\"\r\n";
 
            }
 
            $meat .= "Content-Transfer-Encoding: 8bit\r\n\r\n";
 
            $meat .= $this->message;
 
            $meat .= "\r\n\r\n\r\n--";
 
            $meat .= $boundary;
 
            $meat .= (count($this->attachments) > 0) ? "\r\n" : "--\r\n";
 
            if (count($this->attachments) > 0) {
 
                set_magic_quotes_runtime(0);
 
                for ($j=0;$j<count($this->attachments);$j++) {
 
                    $last_attachment = count($this->attachments) - 1;
 
                    list($filename,$location,$mimetype) = split(',',$this->attachments[$j]);
 
                    $meat .= "Content-Type: ";
 
                    $meat .= $mimetype;
 
                    $meat .= "; name=\"";
 
                    $meat .= $filename;
 
                    $meat .= "\"\r\n";
 
                    $meat .= "Content-Transfer-Encoding: base64\r\n";
 
                    $meat .= "Content-Disposition: attachment\r\n\r\n";
 
                    $meat .= rtrim(chunk_split(base64_encode($this->get_file($location))));
 
                    if ($j == $last_attachment) {
 
                        $meat .= "\r\n--";
 
                        $meat .= $boundary;
 
                        $meat .= "--";
 
                    } else {
 
                        $meat .= "\r\n--";
 
                        $meat .= $boundary;
 
                        $meat .= "\r\n";
 
                    }
 
                }
 
                set_magic_quotes_runtime(get_magic_quotes_gpc());
 
            }
 
 
 
            mail($this->Recipients,$this->subject,$meat,$headers);
 
            return TRUE;
 
 
 
        } else {
 
            return FALSE;
 
        }
 
    }
 
}
 
 
 
?>

Re: I COULD REALLY USE SOME HELP - NEWBIE.....

Posted: Sat Feb 02, 2008 12:57 pm
by Christopher
You seriously need to edit your post to put the code in a

Code: Select all

tag and get rid of the double spacing. You may also want to only post the section of the code that has the problem.

Re: I COULD REALLY USE SOME HELP - NEWBIE.....

Posted: Sat Feb 02, 2008 1:02 pm
by BLS
arborint wrote:You seriously need to edit your post to put the code in a

Code: Select all

tag and get rid of the double spacing. You may also want to only post the section of the code that has the problem.[/quote]


OK...this is the FIRST time in my life on a developer forum.
If I new which part of the code was the problem, I probably wouldn't be asking for help.

Re: I COULD REALLY USE SOME HELP - NEWBIE.....

Posted: Sat Feb 02, 2008 1:23 pm
by Christopher
Welcome. ;)

I am not sure what like 592 is in the message ... and it is only a warning, not an error. It may have always been there but your new server may be showing more kinds of errors.

The message is sent with this line:

Code: Select all

            mail($this->Recipients,$this->subject,$meat,$headers);
So you might want to print $this->Recipients to see what the address is.

Re: I COULD REALLY USE SOME HELP - NEWBIE.....

Posted: Sat Feb 02, 2008 1:31 pm
by BLS
arborint wrote:Welcome. ;)

I am not sure what like 592 is in the message ... and it is only a warning, not an error. It may have always been there but your new server may be showing more kinds of errors.

The message is sent with this line:

Code: Select all

            mail($this->Recipients,$this->subject,$meat,$headers);
So you might want to print $this->Recipients to see what the address is.

Thank you for you help.

How do I "print $this->Recipients" ??

I don't understand. :oops:

Re: I COULD REALLY USE SOME HELP - NEWBIE.....

Posted: Sat Feb 02, 2008 1:36 pm
by Christopher
BLS wrote:How do I "print $this->Recipients" ??

I don't understand. :oops:
You can do either:

Code: Select all

print $this->Recipients;
// or
echo $this->Recipients;