Mail et socket...

Résolu
Signaler
Messages postés
118
Date d'inscription
jeudi 20 mars 2003
Statut
Membre
Dernière intervention
6 octobre 2005
-
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
-
Bonjour, voilà, je veux utiliser l'envoi de mails par sockets,
malheureusement dans mon script au obut d'un certains laps de temps (30
sec), l'exécution s'arrête...C'est au niveau du "DATA". Voici le code
que j'ai pu récupérer :



var $fp;



function send($data){

echo nl2br($data)."
\n";

fputs($this->fp, $data."\r\n");

$this->recv();

}



/*FONTION PERMETTANT DE RECUPER LES REPONSE DU SERVEUR
POUR ECRIR EN BLEU QUE C'EST OK au cas d'echec de commande ou adresse
non valide donc reponse de telnet est: 512 on ecrit en ROUGE*/

function recv(){

$response=fgets($this->fp, 4096);

list ($errno, $errmsg) = split (" ", $response);

if ($errno<500){

echo "$response
\n
";

}else{

echo "$response\n
";

exit;

}

}

// FONCTION OPEN smtp

function open($smtpserver,$ti=2){

$this->fp = fsockopen($smtpserver, 25, $errno, $errstr, $ti);

if (!$this->fp){

echo "echec d'ouverture
$smtpserver
$errstr
($errno).<hr>\n";

exit;

}

$this->recv();

}



function close(){

fclose($this->fp);

}

}



$fun = new funavecSMTP;





$mySMTPserver = "smtp.neuf.fr";

$fournisseur="neuf.fr";

$mail="Leneuf8000@hotmail.com";



$terminator=".";



$fun->open($mySMTPserver);

$fun->send("HELO $fournisseur");

//$fun->send("VRFY $mail");

$fun->send("MAIL FROM: service@geniproj.com");

$fun->send("RCPT TO: Leneuf8000@hotmail.com");

$fun->send("DATA\r\n");

//$fun->send("From: service@geniproj.com");

//$fun->send("To: Leneuf8000@hotmail.com");

//$fun->send("MIME-Version: 1.0");

//$fun->send("Subject: R&V ce soir");

//$fun->send("Content-Type: text/plain; charset=iso-8859-1");

//$fun->send("coucou");

$fun->send(".");

$fun->send("QUIT");



/*POUR EXECUTER D OTRE COMMANDE IL SUFFIT DE RAJOUTER ICI SE QUE VOUS VOULEZ EXECUTER

exemple : $fun->send("help");// help indique toute les commande possible de telnet por 25

*/

$fun->send("QUIT");

$fun->close();

Donc tout s'éxécute bien jusqu'à l'envoi du "DATA", si je n'en mets pas justement ça marche...

Voici ce qu'affiche ma machine :

// CODE PAGE telnetemailverif.php


220 Smtp.neuf.fr -- Server ESMTP (Ready)



HELO neuf.fr



250 Smtp.neuf.fr OK, [84.99.117.127].



MAIL FROM: service@geniproj.com



250 2.5.0 Address Ok.



RCPT TO: Leneuf8000@hotmail.com



250 2.1.5 Leneuf8000@hotmail.com OK.



DATA






354 Enter mail, end with a single ".".



.



250 2.5.0 Ok.



QUIT



221 2.3.0 Bye received. Goodbye.



QUIT



Notice: Undefined offset: 1 in c:\documents and settings\igor\mes documents\travail\top_list\mes_scripts\your_webring\telnetemailverif.php on line 19







Merci pour toutes les futur réponses, j'espère ;-)

6 réponses

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
42
lorsque tu apelles this->recevoir();, alors ton script attend une
réponse, si il n'y en a pas, il attend jusqu'a ce que le temps maximal
soit dépassé... il te faut soit envoyer tout tes datas en même temps
(header du mail compris), soit appeler manuellement $this->recv();
et non automariquement...





In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

http://coucou747.hopto.org
Messages postés
118
Date d'inscription
jeudi 20 mars 2003
Statut
Membre
Dernière intervention
6 octobre 2005

J'oubliai l'exemple du dessus est quand je ne mets rien dans "DATA" avec des données j'obtiens ce message :

// CODE PAGE telnetemailverif.php


220 sMtp.neuf.fr -- Server ESMTP (Ready)



HELO neuf.fr



250 sMtp.neuf.fr OK, [84.99.117.127].



MAIL FROM: service@geniproj.com



250 2.5.0 Address Ok.



RCPT TO: Leneuf8000@hotmail.com



250 2.1.5 Leneuf8000@hotmail.com OK.



DATA






354 Enter mail, end with a single ".".



coucou



Fatal error: Maximum execution time of 30 seconds exceeded in c:\documents and settings\igor\mes documents\travail\top_list\mes_scripts\your_webring\telnetemailverif.php on line 18
Messages postés
118
Date d'inscription
jeudi 20 mars 2003
Statut
Membre
Dernière intervention
6 octobre 2005

J'oubliai l'exemple du dessus est quand je ne mets rien dans "DATA" avec des données j'obtiens ce message :

// CODE PAGE telnetemailverif.php


220 sMtp.neuf.fr -- Server ESMTP (Ready)



HELO neuf.fr



250 sMtp.neuf.fr OK, [84.99.117.127].



MAIL FROM: service@geniproj.com



250 2.5.0 Address Ok.



RCPT TO: Leneuf8000@hotmail.com



250 2.1.5 Leneuf8000@hotmail.com OK.



DATA






354 Enter mail, end with a single ".".



coucou



Fatal error: Maximum execution time of 30 seconds exceeded in c:\documents and settings\igor\mes documents\travail\top_list\mes_scripts\your_webring\telnetemailverif.php on line 18






Merci de vos réponses
Messages postés
118
Date d'inscription
jeudi 20 mars 2003
Statut
Membre
Dernière intervention
6 octobre 2005

Et comment ferai tu pour envoyer tous les headers en meme temps ici?

J'ai essayé :

$fun->send("DATA");

$fun->send("coucou ça va."); //Donc avec le point ici




Autrement :

$fun->send("DATA\r\nFrom: service@geniproj.com\r\nTo: Leneuf8000@hotmail.com\r\ncoucou\r\n.");



Mais aucune méthode ne marche...Merci de ton aide.
Messages postés
118
Date d'inscription
jeudi 20 mars 2003
Statut
Membre
Dernière intervention
6 octobre 2005

Bon ben ça marche, j'ai reçu aujourd'hui les mails que j'avais écrit hier !!!

En tout cas, ta méthode m'a bien aidée thanks !!!
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
42
de rien

In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

http://coucou747.hopto.org