Mail pour les sites free.fr (mise a jour le 17mars2004 10h24)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 11 222 fois - Téléchargée 25 fois

Contenu du snippet

C'est la deuxiemme fonction mail que je fait pour les sites free.
en effet les freenautes, moi meme, n'ont ni le droit a la fonction mail ni le droit d'ouvrir une connexion sur le port 25 (smtp).

bon celui ci après plusieurs teste semble marcher correctement.

Si vous avez des questions n'hesité pas.

Source / Exemple :


<?
/*
Fonction mail v2.301

date de creation:
    mardi 27 janvier 2004.
    
Mise à jour:
    dimanche 17 mars 2004 09h52
    	Nouveau:
    	    possibilité d'envoi d'une pièce jointe (voir plus bas pour son utilisation).
    	PS: Les mails contenant des fichiers trop gros, c'est à dire dépassement la limite tolerer en upload par
    	    l'hebergeur seront envoyé en mail simple (sans pièce jointes);
    mercredi 18 février 2004 15h11
        Nouveau:
            la fonction admet un nouveau parametre => l'expediteur
            ce qui permet de changer d'adresse de l'expediteur a souhait...
            remarque si vous le laisser vide "" c'est l'adresse du compte 
            qui sera prise en compte
    mercredi 28 janvier 2004 23h28.
        correction du bug signalé par Urukai1 (Impossible d'etablir la connexion avec pour http://imp3-q.free.fr&uniq=10753247119291075324711ooooo)
    mercredu 28 janvier 2004 04h50.
        code accelerer d'une etape.
    vendredi 30 janvier 2003 21h43.
        correction de la variable unique.
    samedi 1 fevrier 2003 02h30.
        prise en charge des opérations de maintenance.
    
Avantage:
    Sans Limite.
    Aucune pub.
    
Inconvenient:
    Lent.
    Lors de l'envoi de mail successif, certain peuvent sembler etre du courrier indesirables.

Coded by mmaxuel for ed2k.mmaxuel.free.fr

Completez les champs $compteFree et $passFree pour le rendre operationnel.

renvoie TRUE si le mail a bien ete renvoyer et FALSE si non...
exemple:
    $res = MailH("moi@moi.fr,"toi@toi.fr","Bonjour","Rappelle moi s'il te plait.");
    
    if($res) 
        echo "ok";
    else 
        echo "ooooo";

exemple avec pièce jointes:
    $res = MailH("moi@moi.fr,"toi@toi.fr","Bonjour","Rappelle moi s'il te plait.","fichier texte.zip");
    
    if($res) 
        echo "ok";
    else 
        echo "ooooo";

FONCTION mail POUR LES SITES FREE.FR

C'est la deuxiemme fonction mail que je fait pour les sites free.
en effet les freenautes, moi meme, n'ont ni le droit a la fonction mail ni le droit d'ouvrir une connexion sur le port 25 (smtp).

bon celui ci après plusieurs teste semble marcher correctement.

Si vous avez des questions n'hesité pas.

Voir ci dessous

  • /
function MailH($expediteur, $destinataire, $sujet, $message) { $sujet = urlencode($sujet); $message = urlencode($message); $compteFree = ""; $passFree = ""; $debug = false; if($expediteur=="") $expediteur = $compteFree. "@free.fr"; static $url_compose; static $horde; static $serveur; static $action; static $i; if($i<=0) $i=2; //////// if($url_compose=="" || $horde=="" || $serveur=="" || $action=="") { //Etape 1 //On recupere le horde sur la page d'accueil... $response = SocketMail("http://imp.free.fr/","","","80"); preg_match_all("/<form action=\"([^\"]+)\" method/i", $response, $matches); $action = $matches[1][0]; preg_match_all("/Horde=([^\"]+)\" method/i", $response, $matches); $horde = $matches[1][0]; if($debug) echo "<textarea rows=4 cols=100>1)\r\n". $horde. "\r\n". $action. "</textarea>"; //////// //Etape 2 //Ensuite on s'identifie... $argument = "actionID=105&mailbox=INBOX&imapuser=$compteFree&pass=$passFree&server=imap&folders=INBOX/&new_lang=fr_FR"; $response = SocketMail("http://imp.free.fr$action",$argument,"POST","80"); preg_match_all("/Location: ([^\n]+)\n/i", $response, $matches); $action = $matches[1][0]; preg_match_all("/\/\/([^\/]+)\//i", $action, $matches); $serveur = $matches[1][0]; preg_match_all("/$serveur(\/[^\r]+)\r/i", $response, $matches); $action = $matches[1][0]; if(str_replace("reason=failed","",$action)!=$action) { echo "identifiant free incorrecte.<br>Modifier les parametres de la fonction Mail."; } if($debug) echo "<textarea rows=4 cols=100>2)\r\n". $action. "\r\n". $serveur. "</textarea>"; if(str_replace("maintenance.php", "", $response) != $response) { //Etape 2.2 //on observe la page de maintenance... $response = SocketMail("http://". $serveur. $action, "","GET","80"); preg_match_all("/<form method=\"post\" action=\"([^\"]+)\"/i", $response, $matches); $action = $matches[1][0]; if($debug) echo "<textarea rows=4 cols=100>2.2)\r\n". $action. "\r\n". $serveur. "</textarea>"; //Etape 2.3 //on effectue la maintenance... $argument = "confirm_maintenance=1&Horde=$horde"; $response = SocketMail("http://". $serveur. $action, $argument,"POST","80"); preg_match_all("/Location: ([^\n]+)\n/i", $response, $matches); $action = $matches[1][0]; preg_match_all("/\/\/([^\/]+)\//i", $action, $matches); $serveur = $matches[1][0]; preg_match_all("/$serveur(\/[^\r]+)\r/i", $response, $matches); $action = $matches[1][0]; if($debug) echo "<textarea rows=4 cols=100>2.3)\r\n". $action. "\r\n". $serveur. "</textarea>"; } //////// //Etape 3 //On extrait de la page INBOX l'url qui permet de composer un e-mail $response = SocketMail("http://$serveur$action","","GET","80"); preg_match_all("/var url = \"([^\"]+)\"/i", $response, $matches); $url_compose = $matches[1][0]; if($debug) echo "<textarea rows=4 cols=100>3)\r\n". htmlentities($url_compose). "</textarea>"; } /////// //Etape 4.0 //on poste la pièce jointe si necessaire... if(func_num_args() > 4) { $tabArgs = func_get_args(0); $fileToUpload = $tabArgs[4]; $response = uploadFile("http://$serveur". $url_compose, "sent_mail_folder=INBOX/sent-mail&thismailbox=INBOX&popup=1&reloaded=1&attachmentAction=add&actionID=122",$fileToUpload); preg_match_all("/attachments_name\[\]\" value=\"([^\"]+)\"/i", $response, $matches); $attachments_name = $matches[1][0]; preg_match_all("/attachments_size\[\]\" value=\"([^\"]+)\"/i", $response, $matches); $attachments_size = $matches[1][0]; preg_match_all("/attachments_file\[\]\" value=\"([^\"]+)\"/i", $response, $matches); $attachments_file = $matches[1][0]; preg_match_all("/attachments_type\[\]\" value=\"([^\"]+)\"/i", $response, $matches); $attachments_type = $matches[1][0]; //$unique = $matches[1][0]; if($attachments_size != "") $fileUploaded = true; else $fileUploaded = false; if($debug) echo "<textarea rows=4 cols=100>4.0)\r\n". htmlentities($attachments_name. "\r\n". $attachments_size. "\r\n". $attachments_file. "\r\n". $attachments_type). "</textarea>"; } /////// //Etape 4.1 //On poste le message... if(substr($serveur,strlen($serveur)-1,strlen($serveur))!="/" && substr($url_compose,0,1)!="/") $url_compose = "/". $url_compose; if($url_compose=="") $url_compose = "/horde/imp/compose.php?Horde=$horde"; $argument = "reloaded=1&actionID=114&last_identity=0&bcc=&from=$expediteur&to=$destinataire&subject=$sujet&save_sent_mail=&request_return_receipt=&message=$message"; //On oublie pas les variables des pièces jointes si nécessaire... if(func_num_args() > 4 && $fileUploaded) $argument .= "&attachments_name[]=" . $attachments_name. "&attachments_size[]=". $attachments_size. "&attachments_file[]=". $attachments_file. "&attachments_type[]=". $attachments_type; $response = SocketMail("http://$serveur". $url_compose. "&uniq=". rand(100000000000000000000000000,999999999999999999999999999). date("B"). (mktime()-735*$i),$argument,"POST","80"); $i = $i+$i*$i; if($debug) echo "<textarea rows=4 cols=100>4.1)\r\n". htmlentities($response). "</textarea>"; //On vérifie tout est OK! if(str_replace("window.close();","",$response)!=$response) return TRUE; else return FALSE; } function uploadFile($destination, $parametre, $fichier) { $debug = false; $response = ""; $boundary = "-----------------------------". rand(1000000000000000000,9999999999999999999); if(is_File($fichier)) { if(filesize($fichier) < 2097152) //Soit 1024 * 1024 * 2 = 2Mo { $hwnd = fopen($fichier,"r"); $contenu = fread($hwnd, filesize($fichier)); fclose($hwnd); $argument = "--". $boundary. "\r\nContent-Disposition: form-data; name=\"msie_formdata_is_broken\"\r\n\r\n\r\n"; $tab = split("&",$parametre); if($debug) { echo "Debut tableau split:<br>"; foreach($tab as $a => $b) echo "\"$a\" = \"$b\"<br>"; } $i = 0; foreach($tab as $a => $b) { if($b != "") { $tab2 = split("=", $tab[$i], 2); $argument .= "--". $boundary. "\r\nContent-Disposition: form-data; name=\"". $tab2[0]. "\"\r\n\r\n". $tab2[1]. "\r\n"; } ++$i; } $argument = $argument. "--". $boundary . "\r\nContent-Disposition: form-data; name=\"file_upload\"; filename=\"". basename($fichier). "\"\r\nContent-Type: text/plain\r\n\r\n". $contenu. "\r\n--". $boundary. "--\r\n"; if($debug) echo str_replace("\r\n","<br>",$argument); $response = SocketMail($destination, $argument, "POST", "80", "Pragma: no-cache\r\nContent-Type: multipart/form-data; boundary=\"". $boundary. "\""); } else $response = ""; } else echo "\"$fichier\" n'est pas un fichier valide"; return $response; } function SocketMail($adresse,$argument,$methode,$port,$contentType="") { preg_match_all("/\/\/([^\/]+)\//i",$adresse,$matches); $serveur = $matches[1][0]; preg_match_all("/$serveur(\/[^\r]*)\r/i",$adresse. "\r",$matches); $action = $matches[1][0]; if($port=="") $port = 80; if(strlen($argument)>0) $methode = "POST"; elseif($methode=="") $methode = "GET"; $debug = false; $hwnd = fsockopen($serveur, $port, &$errno, &$errstr, 5); if($hwnd) { $sheader = "$methode $adresse HTTP/1.0\r\n". "Connection: Keep-Alive\r\n". "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)\r\n". "Host: $serveur\r\n"; if($contentType=="") $sheader .= "Content-type: application/x-www-form-urlencoded \r\n"; else $sheader .= $contentType. " \r\n"; if(strlen($argument)>0) { $sheader = $sheader. "Content-length:". strlen($argument). "\r\n\r\n". $argument. "\r\n"; } $srequete = $sheader. "\r\n"; fputs($hwnd,$srequete); if($debug) echo str_replace("\r\n","<br>\r\n",$srequete). "<br>"; $response = ""; $a=1; while(($res = fgets($hwnd,1024)) && ($a==1)) { $response = $response. $res; if($res=="0\r\n") $a=0; } fclose($hwnd); return $response; } else { echo "Impossible d'etablir la connexion avec $serveur pour $adresse"; return FALSE; } } ?>

Conclusion :


Voir ci dessous

A voir également

Ajouter un commentaire

Commentaires

Messages postés
8
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
15 février 2004

Bonjours à tous

Je sais que la fonction mail fonctionne ( normalement ) maintenant sur Free, mais je suis plutôt attaché à ce script, notament parceque je ne me sert pas de ma boîte mail de free à des fins perso, alors si elle peu servir pour mon site.
et j'ai remarqué que l'adresse à changé, c'est maintenant
http://imp2-q.free.fr
au lieu de
http://imp.free.fr/

Alors j'ai fais le changement dans le script, mais pas de mail; peut qu'il y a eu d'autres changements?

serait t'il possible d'avoir une mise à jour pour le plaisir de tous.
Moi je suis fan de ton script.
Messages postés
24
Date d'inscription
lundi 12 mai 2003
Statut
Membre
Dernière intervention
26 juin 2004

Merci, ce serais cazrrément simpa !
Messages postés
101
Date d'inscription
samedi 13 avril 2002
Statut
Membre
Dernière intervention
29 avril 2004

ok en fait tu voudrais faire un formulaire de mail avec pieces jointes???

je peux essayer de te faire peut etre pour lundi...
Messages postés
24
Date d'inscription
lundi 12 mai 2003
Statut
Membre
Dernière intervention
26 juin 2004

Le problème est que le script renvoie ".... n'est pas un fichier valide" sauf quand le fichier est sur le serveur exemple dans le même repertoire que le script.
Je suis donc en train de faire une fonction qui upload la pièce jointe sur le serveur, puis l'envoie avec cette fonction et ensuite supprime le fichier créé
C'est ça que je cherche si qqun l'a déjà fait
Merci de ta rapide réponse peut-être que la précedente été mal formulée
++
Natim
http://www.eeudf-belfort.clan.st
Messages postés
101
Date d'inscription
samedi 13 avril 2002
Statut
Membre
Dernière intervention
29 avril 2004

la fonction permet d'envoyer n'importe quelle pieces jointes... par contre qu'une seul....

tant que le script ne renvoie pas ".... n'est pas un fichier valide" c'est que le fichier a ete accepter...

faite un test en vous envoyant votre propre mail pour voir si la piece jointes passe bien...

voila j'espere avoir repondu correctement.
Afficher les 79 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.