lion2486 Δημοσ. 15 Νοεμβρίου 2008 Δημοσ. 15 Νοεμβρίου 2008 Γειά σε όλους! Έχω ένα προβληματάκι με ένα php. Πιο συγκεκριμενα ειναι ένα αρχείο php από έναν φάκελο (σχετικά με register account-forgot password) και θέλω βοήθεια στο μέρος που στέλνει e-mail. Έχω αυτο: ><?php defined( '_ACM_VALID' ) or die( 'Direct Access to this location is not allowed.' ); class email { var $login = null; var $url = null; var $code = null; function get_email ($login) { global $MYSQL; $MYSQL->connect(); $sql = "SELECT email FROM accounts WHERE login = '" . $login . "' LIMIT 1;"; $q = $MYSQL->query($sql); $r = @mysql_fetch_array($q); return $r['email']; } function send_email ($title, $message) { global $email_from, $server_name,$error; $email = $this->get_email($this->login); $entity_b = array ('[\[iP\]]','[\[iD\]]','[\[email_SUPPORT\]]','[\[url\]]','[\[code\]]','[\[sERVER\]]'); $entity_p = array ($_SERVER['REMOTE_ADDR'], $this->login, $email_from, $this->url, $this->code, $server_name); $title = preg_replace($entity_b, $entity_p, $title); $message = preg_replace($entity_b, $entity_p, $message); $from = "From:".$email_from."\n"."MIME-version: 1.0\n"."Content-type: text/html; charset= iso-8859-1\n"; //echo 'email='.$email.'title='.$title.'mess='.$message.'from='.$from; if(!@mail($email, $title, $message, $from)) return false; return true; } function emailing($account, $mode) { global $vm; switch($mode) { default: break; case 'created_account_validation': $this->login = $account->login; $this->code = $account->code; $this->url = $url = "http://www" . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/\\'). "/?action=activation&key=".$this->code;; $this->send_email($vm['_email_title_verif'], $vm['_email_message_verif']); break; case 'created_account_activation': $this->login = $account->login; $this->send_email($vm['_email_title_ok'], $vm['_email_message_ok']); break; case 'forget_password_validation': $this->login = $account->login; $this->code = $account->code; $this->url = $url = "http://www" . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/\\'). "/?action=forgot_pwd_email&login=".$this->login."&key=".$this->code;; $this->send_email($vm['_email_title_change_pwd'], $vm['_email_message_change_pwd']); break; case 'password_reseted': $this->login = $account->login; $this->code = $account->code; $this->send_email($vm['_email_title_change_pwd_ok'], $vm['_email_message_change_pwd_ok']); break; } } } ?> Πού πρέπει να πιράξω τις ρυθμίσεις του mail server? (Έχω ένα gmail για αυτό το λόγο). Ευχαριστώ εκ' των προτέρων!
zinas Δημοσ. 15 Νοεμβρίου 2008 Δημοσ. 15 Νοεμβρίου 2008 Η συνάρτηση mail() που χρησιμοποιείς δεν κάνει connect σε κάποιο mail server, και άρα δεν μπορείς να στείλεις από το gmail. Αν το μηχάνημα που τρέχει ο apache σου είναι linux, θεωρητικά και αυτό θα παίξει, αν δεν έχεις κάποιο λάθος. Πάντως θα σου πρότεινα να δοκιμάσεις κάποια από τις έτοιμες λύσεις για να στείλεις email, όπως είναι ο PHPMailer ή το PEAR Mail που κάνουν auth σε SMTP Servers κανονικά
lion2486 Δημοσ. 15 Νοεμβρίου 2008 Μέλος Δημοσ. 15 Νοεμβρίου 2008 Με αυτά θα χρησιμοποιήσω το ίδιο php μου ή πρέπει να κάνω πάλι τις ρυθμισεις (π.χ. τι να στέλνει σε ποιόν κτλ) ?
zinas Δημοσ. 15 Νοεμβρίου 2008 Δημοσ. 15 Νοεμβρίου 2008 Είναι classes και καλείς τις δικές τους μεθόδους. Πρέπει να ορίσεις εκεί ότι θες.
lion2486 Δημοσ. 16 Νοεμβρίου 2008 Μέλος Δημοσ. 16 Νοεμβρίου 2008 Θα με βόλεβε πολύ αν μπορούσα μέσα στο php που έχω να προσθέσω απλά τις εντολές ώστε να συνδέεται πρώτα με το gmail. Γίνεται αυτό?
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.