begin process at 2012 02 09 10:10:53
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

E-Mail / Messagerie

 > ENVOYER UN MAIL VIA UN SERVEUR SMTP RELAIS

ENVOYER UN MAIL VIA UN SERVEUR SMTP RELAIS


 Information sur la source

Note :
6 / 10 - par 1 personne
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :E-Mail / Messagerie Niveau :Initié Date de création :19/08/2004 Date de mise à jour :21/08/2004 21:13:34 Vu :5 590

Auteur : ronanf235

Ecrire un message privé
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

Cette petite fonction dont je ne suis pas l'auteur (grand merci a Sylvain De Feo, Université de Rennes 1), permet d'envoyer un mail sans passer par le système de messagerie local.
Elle m'a été très utile sous Linux ou je n'arrivait pas a configurer sendmail correctement.

il n'y a qu'a configurer le serveur de mail, et ensuite c'est comme la fonction mail() de php.


Source

  • // definition du serveur de mail
  • define("SERVEURMAIL","197.234.22.485");
  • ou
  • define("SERVEURMAIL","mailhost.monDomaine.fr");
  • //fonction email
  • function email($from, $to, $subject, $msg,$content="text/plain"){
  • $headers = "MIME-Version: 1.0\r\n";
  • $headers .= "Content-type: ".$content;
  • $headers .= ";charset=iso-8859-1\r\n";
  • $headers .= "Reply-To: $from\r\n";
  • $headers .= "X-Mailer: PHP SCRIPT";
  • if ($from!=null && $to!=null && $subject!=null && $msg!=null)
  • //&& checkmail($from)&&checkmail($to)
  • {
  • $connection = fsockopen (SERVEURMAIL,25, &$errno,
  • &$errstr, 1);
  • if (!$connection) {
  • return false;
  • } else {
  • $res1=fgets($connection, 256);
  • if(substr($res1, 0, 3) != "220") return false;
  • fputs($connection, "HELO localhost\n");
  • $res2=fgets($connection, 256);
  • if(substr($res2, 0, 3) != "250") return false;
  • fputs($connection, "MAIL FROM: $from\n");
  • $res3=fgets($connection, 256);
  • if(substr($res3, 0, 3) != "250") return false;
  • fputs($connection, "RCPT TO: $to\n");
  • $res4=fgets($connection, 256);
  • if(substr($res4, 0, 3) != "250") return false;
  • fputs($connection, "DATA\n");
  • $res5=fgets($connection, 256);
  • if(substr($res5, 0, 3) != "354") return false;
  • fputs($connection, "TO:$to\nFrom:$from\nSubject:$subject\n$headers\n\n$msg\n.\n");
  • $res6=fgets($connection, 256);
  • if(substr($res6, 0, 3) != "250") return false;
  • fputs($connection, "QUIT\n");
  • $res7=fgets($connection, 256);
  • if(substr($res7, 0, 3) != "221") return false;
  • fclose ($connection);}
  • if(substr($res1, 0, 3) == "220" && substr($res2, 0, 3)
  • == "250" && substr($res3,0, 3) == "250" && substr($res4, 0, 3) == "250"
  • && substr($res5,
  • 0, 3) == "354" && substr($res6, 0, 3) == "250" && substr($res7, 0, 3)
  • == "221") return true;
  • }else{
  • return false;
  • }
  • }
// definition du serveur de mail
define("SERVEURMAIL","197.234.22.485");
ou
define("SERVEURMAIL","mailhost.monDomaine.fr");


//fonction email

function email($from, $to, $subject, $msg,$content="text/plain"){
 $headers = "MIME-Version: 1.0\r\n";
 $headers .= "Content-type: ".$content;
 $headers .= ";charset=iso-8859-1\r\n";
 $headers .= "Reply-To: $from\r\n";
 $headers .= "X-Mailer: PHP SCRIPT";
       
		if ($from!=null && $to!=null && $subject!=null && $msg!=null)
			//&& checkmail($from)&&checkmail($to)
        { 
        $connection = fsockopen (SERVEURMAIL,25, &$errno, 
&$errstr, 1);
                if (!$connection) {
                 return false;
                } else {
                 $res1=fgets($connection, 256);
                 if(substr($res1, 0, 3) != "220") return false;
 
                 fputs($connection, "HELO localhost\n");
                 $res2=fgets($connection, 256);
                 if(substr($res2, 0, 3) != "250") return false;
 
                 fputs($connection, "MAIL FROM: $from\n");
                 $res3=fgets($connection, 256);
                 if(substr($res3, 0, 3) != "250") return false;
 
                 fputs($connection, "RCPT TO: $to\n");
                 $res4=fgets($connection, 256);
                 if(substr($res4, 0, 3) != "250") return false;
 
                 fputs($connection, "DATA\n");
                 $res5=fgets($connection, 256);
                 if(substr($res5, 0, 3) != "354") return false;
 
                 fputs($connection, "TO:$to\nFrom:$from\nSubject:$subject\n$headers\n\n$msg\n.\n");
                 $res6=fgets($connection, 256);
                 if(substr($res6, 0, 3) != "250") return false;
 
                 fputs($connection, "QUIT\n");
                 $res7=fgets($connection, 256);
                 if(substr($res7, 0, 3) != "221") return false;
 
                 fclose ($connection);}
                 if(substr($res1, 0, 3) == "220" && substr($res2, 0, 3) 
== "250" && substr($res3,0, 3) == "250" && substr($res4, 0, 3) == "250" 
&& substr($res5,
 0, 3) == "354" && substr($res6, 0, 3) == "250" && substr($res7, 0, 3) 
== "221") return true;
    }else{
        return false;
        }
}

 Conclusion

Cette fonction n'a pas la prétention d'être exhaustive, mais elle peut servir dans pas mal de cas, surtout pour les nbx  personnes qui comme moi se perdent dans linux :-)


 Historique

19 août 2004 10:42:38 :
21 août 2004 21:13:35 :

 Sources de la même categorie

Source avec Zip Source avec une capture FORM TO MAIL AVEC PROTECTION PAR TOKEN ET CAPTCHA CONTRÔLES ... par cod57
Source avec Zip Source avec une capture FORMULAIRE VERS COURRIEL BASIQUE AVEC CONTRÔLE CAPTCHA ANTI ... par cod57
Source avec Zip CHAT EN PHP ET JQUERY par pitchoubrazil
Source avec Zip Source avec une capture FORMULAIRE DE CHOIX MULTI-CONTACT VALIDE XHTML 1.0 TRANSITIO... par aventurier19
Source avec Zip Source avec une capture WEB MESSENGER par EvildarkEurope

Commentaires et avis

Commentaire de GRenard le 21/08/2004 03:54:09

Tu peux marquer ou tu as pris la doc pour les echanges de commandes au serveur SMTP ?

Commentaire de ronanf235 le 21/08/2004 21:17:17

Salut,
j'aurai communiqué ces informations avec plaisir.....si je les avais eu...
comme je le dis dans la présentation, cette fonction m'a été envoyée par un des responsable du CRI de l'université de Rennes 1.
désolé ;-)

Commentaire de badr07 le 03/08/2006 23:14:40

Franchement trop pourris le code!
Il marche meme pas!
Ca servait à rien de le mettre...

Commentaire de dremos le 17/01/2008 04:04:32

je recois ca comme reponse , apres avoir tester ta fonction

Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of fsockopen(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in c:\program files\easyphp1-8\www\smtp.php on line 19

Commentaire de dremos le 17/01/2008 04:06:36

mais sinon ca marche je viens de recevoir le mail dans le dossier "courrier indesirable" parceque j'avais mis un email bidon !! :) Merci comme meme

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,201 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales