Προς το περιεχόμενο

λίγη βοήθεια σε .php


lion2486

Προτεινόμενες αναρτήσεις

Δημοσ.

Γειά σε όλους!

Έχω ένα προβληματάκι με ένα 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 για αυτό το λόγο). Ευχαριστώ εκ' των προτέρων!

Δημοσ.

Η συνάρτηση mail() που χρησιμοποιείς δεν κάνει connect σε κάποιο mail server, και άρα δεν μπορείς να στείλεις από το gmail. Αν το μηχάνημα που τρέχει ο apache σου είναι linux, θεωρητικά και αυτό θα παίξει, αν δεν έχεις κάποιο λάθος.

 

Πάντως θα σου πρότεινα να δοκιμάσεις κάποια από τις έτοιμες λύσεις για να στείλεις email, όπως είναι ο PHPMailer ή το PEAR Mail που κάνουν auth σε SMTP Servers κανονικά

Δημοσ.

Με αυτά θα χρησιμοποιήσω το ίδιο php μου ή πρέπει να κάνω πάλι τις ρυθμισεις (π.χ. τι να στέλνει σε ποιόν κτλ) ?

Δημοσ.

Θα με βόλεβε πολύ αν μπορούσα μέσα στο php που έχω να προσθέσω απλά τις εντολές ώστε να συνδέεται πρώτα με το gmail. Γίνεται αυτό?

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...