Comment configurer php.ini, ou utiliser la commande set_ini() sous linux pour en [Résolu]

Signaler
Messages postés
240
Date d'inscription
mercredi 19 février 2003
Statut
Membre
Dernière intervention
17 janvier 2013
-
PascalCmoa
Messages postés
240
Date d'inscription
mercredi 19 février 2003
Statut
Membre
Dernière intervention
17 janvier 2013
-
Bonjour à tous,



Je suis en train de mettre en place mon propre serveur web sous linux
(Mandriva). Toute la partie installation d'apache, MySQL, PHPMyAdmin,
PH c'est déroulée sans problème. Mes scripts PHP tourne parfaitement . Le seul petit Hic , c'est que ma fonction mail ne veut pas envoyer les emails (C'est dur la vie ).
Je déclare bien le serveur SMTP de mon FAI et aussi la commande
sendmail dans le php.ini mais rien à faire, les mails ne partent
toujours pas.



Y aurai-t'il une ame charitable pour m'aider, s'il vous plait

PascalCmoa
[mailto:pascal.aknouche@free.fr email: PascalCmoa]

3 réponses

Messages postés
240
Date d'inscription
mercredi 19 février 2003
Statut
Membre
Dernière intervention
17 janvier 2013
5
Bonjour à tous,



Suite à vos réponse, j'ai continuer à chercher une autre solution. Il
existe une classe PHPMailer qui réalise tout ce dont j'avais besoin.

Je remercie quand même ceux qui m'ont écrit pour m'aider à résoudre mon problème.

PascalCmoa
[mailto:pascal.aknouche@free.fr email: PascalCmoa]
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
6
Salut,



J'ai jamais eu besoin de configurer quoique se soit pour envoyer un mail avec Apache 2 sous mdk.



Mais bon, si tu coinces dans l'envoi des mail, je peux te proposer un source qui envoi Ca$h !!!





1. chope le nom de domaine depuis l'adresse mail (derrière le @)

2. demande aux serveur dns l'IP (ou les IP) correspondant à ce domaine (getmxrr & gethostbyname)

3. Pour chaque IP trouvé, tente une connexin fsockopen sur port 25 du
serveur destinataire. Et envoi directos le mail au gars concerné !

4. Si pas d'IP trouvé, je tente d'envoyer quand même la connexion avec le nom de domaine.



Intérets :

1 => plus rapide que mail()

2 => certitude de la bonne réception du mail, et donc la validité de l'adresse mail est testée en directe (return false)

3 => fonctionne sous Windows ! (même si tu t'en fout, et moi aussi)



Inconveniant :

1 => La source d'origine n'est pas de moi ;)... Mais je l'ai pas mal modifié

2 => n'envoi qu'un seul mail à la fois (donc pour des envois groupés, faire une boucle sur les destinataires)

3 => Le destinataire du mail et les entêtes du mail n'ont rien à
voir !!!! Je le dis, car ça m'a pris une demi heure avant de percuter

ex:

Pour envoyer une Copie du mail (Cc: )... Ahahah ! genre

--------header-------

To: moi@moi.fr, lui@lui.fr

Cc: elle@elle.fr

--------/header-------



Ben tu te connecte à elle.fr (elle.fr est la destinataire).

Puis tu envoi le header defini ci dessus...



Et donc pour envoyer des Bcc, ne pas oublier de les effacer de l'header
(sauf celui à qui tu envoi, sinon tu vas passer pour spam)





Bon, je te laisse décortiquer la source, c'est pas très compliqué, tu verras...



A+



PS : je viens de faire deux-trois modif pour toi, excuses les éventuelles fautes de syntaxe







--------------------------SOURCE------------------------------



<?php



// getmxrr() - fix for windows users

if(strtoupper(substr(PHP_OS, 0, 3)) == 'WIN'){

function getmxrr($hostname, &$mxhosts){

$mxhosts = array();

exec('nslookup -type=mx '.$hostname, $result_arr);

foreach($result_arr as $line){


if(preg_match("/.*mail exchanger (.*)/", $line, $matches)) $mxhosts[]
$matches[1];

}

return (count($mxhosts) > 0);

}

}



// usleep() - fix for >= php5 windows users

function msleep($usecs){

$temp = gettimeofday();

$start = (int)$temp['usec'];

while(true){

$temp = gettimeofday();

$stop = (int)$temp['usec'];

if(($stop-$start) >= $usecs) break;

}

}



/**

* Return an array with tow values: boolean and string

*

* @author Laurentiu Tanase <expertphp@yahoo.com>

* @Modifier Julien Garand (expertphp ;) frimeur... )

*
=> Traduction en français des messages d'erreur

* => quelques améliorations passagères

* => ajout de la variale de débuggage

*
=> ajout du "on essaye avec le nom de domaine"

* @version 2.4

* @param string $to To e-mail address

* @param string $subject Mail Subject

* @param string $message Message ( Mixed )

* @param string $from From e-mail address

* @param string $header Additional headers

* @param integer $timeout Time out connection

*/

function smtp_mail($to, $subject, $message, $from, $header, $timeout = 30, $debug=false){



$exp_to = explode("@", $to);

getmxrr($exp_to[1], $mxhost);

$iparr = array();



// ici, on chope une colection d'IP

foreach($mxhost as $hostname) {

$iphost = gethostbyname($hostname);

if($debug and ($hostname $iphost or $hostname $exp_to[1]))

echo
"$hostname pas trouvé, on essaye avec le nom de domaine
\n";

$iparr[] = $iphost;

}



$vphp (strtoupper(substr(PHP_OS, 0, 3)) 'WIN'
&& version_compare(phpversion(), "5.0.0", ">=")) ? true :
false;



$ret = false;

// Et là, on essaye les IP les uns après les autres

foreach($iparr as $ipaddr){



if( !($connect = @fsockopen($ipaddr, 25, $err_num, $err_msg, $timeout)) ) {

if($debug) echo "Connexion à $ipaddr échouée
\n";

continue;

}



$rcv0 = fgets($connect, 1024);

if(substr($rcv0, 0, 3) != "220"){

fclose($connect);

if($debug)
echo "Le serveur à répondu $rcv0 à la connexion
\n";

continue;

}



$exp_from = explode("@", $from);

fputs($connect, "HELO ".$exp_from[1]."\r\n");

$rcv1 = fgets($connect, 1024);

if(substr($rcv1, 0, 3) != "250"){

fclose($connect);

if($debug)
echo "Le serveur à répondu $rcv1 à l'envoi de 'HELO
{$exp_fro[1]}'
\n";

continue;

}



fputs($connect, "MAIL FROM:<".$from.">\r\n");

$rcv2 = fgets($connect, 1024);

if(substr($rcv2, 0, 3) != "250"){

fclose($connect);

if($debug)
echo "Le serveur à répondu $rcv2 à l'envoi de 'MAIL
FROM:<".$from.">'
\n";

continue;

}



fputs($connect, "RCPT TO:<".$to.">\r\n");

$rcv3 = fgets($connect, 1024);

if(substr($rcv3, 0, 3) != "250"){

fclose($connect);

if($debug)
echo "Le serveur à répondu $rcv3 à l'envoi de 'RCPT
TO:<".$to.">'
\n";

continue;

}



fputs($connect, "DATA\r\n");

$rcv4 = fgets($connect, 1024);

if(substr($rcv4, 0, 3) != "354"){

fclose($connect);

if($debug)
echo "Le serveur à répondu $rcv4 à l'envoi de 'DATA'
\n";

continue;

}



// entête par défaut...

// Les entêtes spécifiées écraseront celles-ci (genre un To remplacera le To d'ici)

$arrH = array('Date'=>strftime(DATEFR_XL),

'Subject'=>"$subject",


'To'=>""$exp_to[0]"
<$to>",


'From'=>""{$exp_from[0]}"
<$from>");



$h = str_replace("\r",'',$header);

$h = explode("\n",$h);

foreach($h as $v) {

$v = str_replace(': ',':',$v);

if( !isset($v[0],$v[1]) ) continue;

list($a,$b) = explode(':',$v);

if(!$a or !$b) continue;

$arrH[$a] = $b;

}

$h = '';

foreach($arrH as $k=>$v) {

$h.="$k: $v\r\n";

}



$rep = array(".\r\n", ".\n", ".\r");

fputs($connect, $h."\r\n".str_replace($rep, ". \r\n", $message)." \r\n");

fputs($connect, ".\r\n");

$rcv5 = fgets($connect, 1024);

if(substr($rcv5, 0, 3) != "250"){

fclose($connect);

if($debug)
echo "Le serveur à répondu $rcv5 à l'envoi des entêtre
\n$header
\net du message
\n$message
\n";

continue;

}



fputs($connect, "QUIT\r\n");

if($vphp) msleep(1);

else usleep(1);

$rcv6 = fgets($connect, 1024);

if($vphp) msleep(1);

else usleep(1);

fclose($connect);



$ret = true;

break;

}



return $ret;

} // End smtp_mail() -----------------------------



?>



-------------------FIN-------SOURCE------------------------------
Messages postés
861
Date d'inscription
mardi 26 mars 2002
Statut
Membre
Dernière intervention
29 novembre 2006
1
Sael og blesud



Vous avez installé sendmail ??? :-)

Bon courage ...

NB : Si la réponse vous convient merci de l'accepter pour fermer ce thread ...

Sigurjón Bírgir Sigurðssón aka Sjón