begin process at 2012 02 15 05:12:33
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

E-Mail / Messagerie

 > CLASS MAILEUR

CLASS MAILEUR


 Information sur la source

Note :
8,5 / 10 - par 2 personnes
8,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :E-Mail / Messagerie Classé sous :maileur, smtp, mail, class, socket Niveau :Initié Date de création :13/06/2005 Date de mise à jour :14/12/2005 15:50:47 Vu :8 449

Auteur : coucou747

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (44)
Ajouter un commentaire et/ou une note


 Description

Comment envoyer un mail sans la fonction mail ? (elle est parfois désactivée)

j'ai aussi pris le temps de gérer les envois à de multiples personnes, les surnoms, le changement possible de la date, les pièces jointes... l'entête est rédigée automatiquement, on n'a juste à choisir le type de contenu.

Sachant que CC est un champ inutile, je ne l'ai pas mis ici.

Pour faire plaisir à certaines personnes, j'ai fait une class...

Source

  • <?php
  • class Mail_{
  • function coupe($str, $l){
  • /*
  • coupe la chaine $str en n lignes de $l caractères
  • */
  • $retour='';
  • while(($a=substr($str,0,$l))){
  • $str=substr($str,$l);
  • $retour.=$a.'
  • ';
  • }
  • return $retour;
  • }
  • function set($serveur, $timeout=15, $port=25, $auth=false){
  • $this->serveur=$serveur;
  • $this->timeout=$imeout;
  • $this->port=$port;
  • $this->auth=$auth;
  • }
  • function setFrom($from, $namefrom){
  • $this->from=$from;
  • $this->namefrom=$namefrom;
  • }
  • function send($toar, $nameto ,$message, $prioritee, $subject, $type='plain', $piece_jointes=false, $date=false){
  • /*
  • Cette fonction envoi un mail par le protocol SMTP, elle renvoi un tableau qui contient :
  • true or false selon le fait qu'il y ai eu une erreur ou non
  • puis les différentes phases de l'intervention : soit le message d'erreur et le code, soit
  • ce que le maileur à dit.
  • Elle permet :
  • de choisir son serveur, son port,
  • destinataire, nom du destinataire, sous forme de tableaux pour pouvoir en mettre plusieurs
  • destitinateur, nom du destinateur,
  • message,
  • prioritée,
  • sujet,
  • les pièces jointes sous formes de tableau (ou false, mais c'est un paramètre optionnel)
  • la date (ou false, mais c'est un paramètre optionnel)
  • le temps d'attente maximal pour la connexion (15 par défaut, c'est un paramètre optionnel)
  • le port réseau (25 par défaut, c'est un paramètre optionnel)
  • */
  • //effectue un prétraitement du message :
  • $sock=fsockopen($this->serveur, $this->port, $errno, $errstr, $this->timeout);
  • if (!$sock) {
  • return array(false, $errstr, $errno);
  • }else{
  • if ($date===false){
  • $date=date('r');
  • }
  • $r="\r\n";
  • $message=str_replace("\n.","\n..",$message);
  • if ($piece_jointes===false)
  • $message='Content-Type: text/'.$type.'; charset=ISO-8859-1; format=flowed'.$r.
  • 'Content-Transfer-Encoding: 7bit'.$r.
  • $message.$r;
  • else{
  • $boundary='------------000505030409000304030606';
  • $message='Content-Type: multipart/mixed;'.$r.
  • ' boundary="'.$boundary.'"'.$r.$r.
  • 'This is a multi-part message in MIME format.'.$r.
  • '--'.$boundary.$r.
  • 'Content-Type: text/'.$type.'; charset=ISO-8859-1; format=flowed'.$r.
  • 'Content-Transfer-Encoding: 7bit'.$r.
  • $message.$r.$r.
  • '--'.$boundary.$r;
  • $end=count($piece_jointes)-1;
  • foreach ($piece_jointes as $n=>$a){
  • $message.='Content-Type: application/'.filetype($a).';'.$r.
  • ' name="'.$a.'"'.$r.
  • 'Content-Transfer-Encoding: base64'.$r.
  • 'Content-Disposition: attachement;'.$r.
  • ' filename="'.$a.'"'.$r.
  • $r.coupe(base64_encode(file_get_contents($a)),72).'--'.$boundary;
  • if ($n==$end)
  • $message.='--'.$r;
  • else
  • $message.=$r;
  • }
  • }
  • $tostr='';
  • $msg=array();
  • $msg[]=true;
  • //les présentations
  • $msg[]=fgets($sock, 4096);
  • if (substr($msg[count($msg)-1],0,1)=='5'){
  • $msg[0]=false;
  • return $msg;
  • }
  • fwrite($sock, 'HELO coucou'.$r);
  • $msg[]=fgets($sock, 4096);
  • if (substr($msg[count($msg)-1],0,1)=='5'){
  • $msg[0]=false;
  • return $msg;
  • }
  • if ($this->auth!==false){
  • fwrite($sock, 'AUTH LOGIN'.$r);
  • $msg[]=fgets($sock, 4096);
  • if (substr($msg[count($msg)-1],0,1)=='5'){
  • $msg[0]=false;
  • return $msg;
  • }
  • fwrite($sock, base64_encode($auth[0]).$r);
  • $msg[]=fgets($sock, 4096);
  • if (substr($msg[count($msg)-1],0,1)=='5'){
  • $msg[0]=false;
  • return $msg;
  • }
  • fwrite($sock, base64_encode($auth[1]).$r);
  • $msg[]=fgets($sock, 4096);
  • if (substr($msg[count($msg)-1],0,1)=='5'){
  • $msg[0]=false;
  • return $msg;
  • }
  • }
  • //indique le destinateur
  • fwrite($sock, 'MAIL FROM: <'.$this->from.'>'.$r);
  • $msg[]=fgets($sock, 4096);
  • if (substr($msg[count($msg)-1],0,1)=='5'){
  • $msg[0]=false;
  • return $msg;
  • }
  • //indique le destinataire
  • foreach ($toar as $n=>$to){
  • fwrite($sock, 'RCPT TO: <'.$to.'>'.$r);
  • $msg[]=fgets($sock, 4096);
  • if (substr($msg[count($msg)-1],0,1)=='5'){
  • $msg[0]=false;
  • return $msg;
  • }
  • $tostr.=$nameto[$n].' <'.$to.'>,';
  • }
  • //indique que l'on commence à envoyer le message
  • fwrite($sock, 'DATA'.$r);
  • $msg[]=fgets($sock, 4096);
  • if (substr($msg[count($msg)-1],0,1)=='5'){
  • $msg[0]=false;
  • return $msg;
  • }
  • fwrite($sock,'From: '.$this->namefrom.' <'.$this->from.'>'.$r
  • .'To: '.substr($tostr,0,strlen($tostr)-1).$r
  • .'Subject: '.$subject.$r
  • .'X-Priority: '.$prioritee.$r
  • .'Date: '.$date.$r
  • .$message.'.'.$r);
  • $msg[]=fgets($sock, 4096);
  • if (substr($msg[count($msg)-1],0,1)=='5'){
  • $msg[0]=false;
  • return $msg;
  • }
  • //quitte
  • fwrite($sock, 'QUIT'.$r);
  • $msg[]=fgets($sock, 4096);
  • if (substr($msg[count($msg)-1],0,1)=='5'){
  • $msg[0]=false;
  • return $msg;
  • }
  • fclose($sock);
  • }
  • return $msg;
  • }
  • }
  • ?>
<?php

class Mail_{
	function coupe($str, $l){
		/*
			coupe la chaine $str en n lignes de $l caractères
		*/
		$retour='';
		while(($a=substr($str,0,$l))){
			$str=substr($str,$l);
			$retour.=$a.'
	';
		}
		return $retour;
	}
	function set($serveur,  $timeout=15, $port=25, $auth=false){
		$this->serveur=$serveur;
		$this->timeout=$imeout;
		$this->port=$port;
		$this->auth=$auth;
	}
	function setFrom($from, $namefrom){
		$this->from=$from;
		$this->namefrom=$namefrom;
	}
	function send($toar, $nameto ,$message, $prioritee, $subject, $type='plain', $piece_jointes=false, $date=false){
		/*
		Cette fonction envoi un mail par le protocol SMTP, elle renvoi un tableau qui contient :
		true or false selon le fait qu'il y ai eu une erreur ou non
		puis les différentes phases de l'intervention : soit le message d'erreur et le code, soit
		ce que le maileur à dit.
		Elle permet :
		de choisir son serveur, son port,
		destinataire, nom du destinataire, sous forme de tableaux pour pouvoir en mettre plusieurs
		destitinateur, nom du destinateur,
		message,
		prioritée,
		sujet,
		les pièces jointes sous formes de tableau (ou false, mais c'est un paramètre optionnel)
		la date (ou false, mais c'est un paramètre optionnel)
		le temps d'attente maximal pour la connexion (15 par défaut, c'est un paramètre optionnel)
		le port réseau (25 par défaut, c'est un paramètre optionnel)
		*/
		//effectue un prétraitement du message :
		$sock=fsockopen($this->serveur, $this->port, $errno, $errstr, $this->timeout);
		if (!$sock) {
			return array(false, $errstr, $errno);
		}else{
			if ($date===false){
				$date=date('r');
			}
			$r="\r\n";
			$message=str_replace("\n.","\n..",$message);
			if ($piece_jointes===false)
				$message='Content-Type: text/'.$type.'; charset=ISO-8859-1; format=flowed'.$r.
				'Content-Transfer-Encoding: 7bit'.$r.
				$message.$r;
			else{
				$boundary='------------000505030409000304030606';
				$message='Content-Type: multipart/mixed;'.$r.
				' boundary="'.$boundary.'"'.$r.$r.
				'This is a multi-part message in MIME format.'.$r.
				'--'.$boundary.$r.
				'Content-Type: text/'.$type.'; charset=ISO-8859-1; format=flowed'.$r.
				'Content-Transfer-Encoding: 7bit'.$r.
				$message.$r.$r.
				'--'.$boundary.$r;
				$end=count($piece_jointes)-1;
				foreach ($piece_jointes as $n=>$a){
					$message.='Content-Type: application/'.filetype($a).';'.$r.
					' name="'.$a.'"'.$r.
					'Content-Transfer-Encoding: base64'.$r.
					'Content-Disposition: attachement;'.$r.
					' filename="'.$a.'"'.$r.
					$r.coupe(base64_encode(file_get_contents($a)),72).'--'.$boundary;
					if ($n==$end)
						$message.='--'.$r;
					else
						$message.=$r;
				}
			}
			$tostr='';
			$msg=array();
			$msg[]=true;
			//les présentations
			$msg[]=fgets($sock, 4096);
			if (substr($msg[count($msg)-1],0,1)=='5'){
				$msg[0]=false;
				return $msg;
			}
			fwrite($sock, 'HELO coucou'.$r);
			$msg[]=fgets($sock, 4096);
			if (substr($msg[count($msg)-1],0,1)=='5'){
				$msg[0]=false;
				return $msg;
			}
			if ($this->auth!==false){
				fwrite($sock, 'AUTH LOGIN'.$r);
				$msg[]=fgets($sock, 4096);
				if (substr($msg[count($msg)-1],0,1)=='5'){
					$msg[0]=false;
					return $msg;
				}
				fwrite($sock, base64_encode($auth[0]).$r);
				$msg[]=fgets($sock, 4096);
				if (substr($msg[count($msg)-1],0,1)=='5'){
					$msg[0]=false;
					return $msg;
				}
				fwrite($sock, base64_encode($auth[1]).$r);
				$msg[]=fgets($sock, 4096);
				if (substr($msg[count($msg)-1],0,1)=='5'){
					$msg[0]=false;
					return $msg;
				}
			}
			//indique le destinateur
			fwrite($sock, 'MAIL FROM: <'.$this->from.'>'.$r);
			$msg[]=fgets($sock, 4096);
			if (substr($msg[count($msg)-1],0,1)=='5'){
				$msg[0]=false;
				return $msg;
			}
			//indique le destinataire
			foreach ($toar as $n=>$to){
				fwrite($sock, 'RCPT TO: <'.$to.'>'.$r);
				$msg[]=fgets($sock, 4096);
				if (substr($msg[count($msg)-1],0,1)=='5'){
					$msg[0]=false;
					return $msg;
				}
				$tostr.=$nameto[$n].' <'.$to.'>,';
			}
			//indique que l'on commence à envoyer le message
			fwrite($sock, 'DATA'.$r);
			$msg[]=fgets($sock, 4096);
			if (substr($msg[count($msg)-1],0,1)=='5'){
				$msg[0]=false;
				return $msg;
			}
			fwrite($sock,'From: '.$this->namefrom.' <'.$this->from.'>'.$r
			.'To: '.substr($tostr,0,strlen($tostr)-1).$r
			.'Subject: '.$subject.$r
			.'X-Priority: '.$prioritee.$r
			.'Date: '.$date.$r
			.$message.'.'.$r);
			$msg[]=fgets($sock, 4096);
			if (substr($msg[count($msg)-1],0,1)=='5'){
				$msg[0]=false;
				return $msg;
			}
			//quitte
			fwrite($sock, 'QUIT'.$r);
			$msg[]=fgets($sock, 4096);
			if (substr($msg[count($msg)-1],0,1)=='5'){
				$msg[0]=false;
				return $msg;
			}
			fclose($sock);
			
		}
		return $msg;
	}
}
?>



 Historique

30 novembre 2005 13:41:14 :
ajouts de mots clefs
14 décembre 2005 15:50:48 :
Débugage, plus transformation de la fonction en class

 Sources du même auteur

Source avec une capture IMAGES GENETIQUES
Source avec Zip Source avec une capture RUBIX CUBE
Source avec Zip INTERPRETEUR BRAINFUCK
Source avec Zip PROXY HTTP : SAUVEZ VOS VIDEOS PREFEREES.
Source avec une capture ECRIRE UN TEXTE EN CERCLE SUR UNE IMAGE

 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

 Sources en rapport avec celle ci

CLASS POUR SOCKETS par xstyled
Source avec Zip CLASS MAIL GESTION COMPLÈTE par cerede2000
Source avec Zip Source avec une capture POP2RSS: CREATION D'UN FIL RSS DEPUIS UNE LISTE DE MAILS POP par gogomanu
Source avec Zip CLASS D' ENVOIE DE MAIL EN SMTP par ImmortalPC
Source avec Zip CLASSE PHP PERMETTANT D'ENVOYER UN MAIL À PARTIR D'UN TEXTE ... par toutou78

Commentaires et avis

Commentaire de Kevin007 le 13/06/2005 20:54:31

Salut,

La source a l'air pas mal :D bravo mais deux points importants :

_ As-tu pensé à la commande EHLO remplaçant la commande HELO sur certains serveurs ?

_ As-tu aussi pensé à la réponse du serveur avec ses codes ?

Bonne continuation pour la suite :P

Commentaire de coucou747 le 13/06/2005 21:12:44 administrateur CS

La commande EHLO n'existe pas, or, la commande HELO fonctionne partout...

la réponse du serveur est prise en compte, si tu regardes ce qu'a renvoyé la fonction...

Commentaire de GRenard le 14/06/2005 04:13:49

D'après toi, pourquoi CC est inutile ?
while(($a=substr($str,0,$l))) est un peu ambigue
Ca s'rait cool d'avoir les specs :)

Commentaire de Kevin007 le 14/06/2005 08:00:42

Je vois que tu aimes critiquer les autres mais pas être critiqué...

Quand je parle de réponse du serveur, je ne parle pas de la REPONSE FINALE mais d'une réponse étape par étape...

A bon entendeur salut ;)

Commentaire de malik7934 le 14/06/2005 08:03:09

Hello Coucou,

Alors comme ca la commande EHLO n'existe pas...

http://www.sourcekeg.co.uk/www.python.org/doc/2.2.3/lib/SMTP-objects.html:

helo([hostname])
Identify yourself to the SMTP server using "HELO". The hostname argument defaults to the fully qualified domain name of the local host.
In normal operation it should not be necessary to call this method explicitly. It will be implicitly called by the sendmail() when necessary.

ehlo([hostname])
Identify yourself to an ESMTP server using "EHLO". The hostname argument defaults to the fully qualified domain name of the local host. Examine the response for ESMTP option and store them for use by has_option().
Unless you wish to use has_option() before sending mail, it should not be necessary to call this method explicitly. It will be implicitly called by sendmail() when necessary.

hehe ;o)

Commentaire de coucou747 le 14/06/2005 08:38:05 administrateur CS

dans les commentaires, à la ligne 18, tu vois que le maileur renvoi les différentes étapes de ce que le maileur a dit...

en effet, ligne 73 et 104, tu comprends qu'un tableau est renvoyé avec LES DIFFERENTES PHRASES QUE RENVOI LE SERVEUR !

donc, il ne renvoi pas que la réponse finale.

être critiqué ne me dérange pas, aparement, c'est plutôt moi qui te dérange en expliquant que mon script gère ce que tu demandes (plutôt paradoxal non ?)...

CC est inutile parceque le serveur le prends de la même façon que RCPT TO, la seule différence est dans l'entête du message... c'est en fait la même chose que RCPT TO... c'est juste le logiciel de réception qui les différencie.

pour mon while, j'ai mis des parenthèses en trop, c'est pas grave, mais je corrigerais. Cette fonction prends une chaine et une longueur en argument, elle est appelée quand on veut envoyer un fichier joint, elle permet de couper le fichier en lignes de 72 caractères. J'aurais pu prendre en considération les retours naturels à la ligne, mais comme le fichier subbit avant un encodage en 64 bits, on n'en a pas besoin.

pour EHLO, je n'avais jamais entendu parler de cette commande, je m'excuses d'avoir nié son existance, mais je ne pourrais pas la mettre en place, je n'ai aucun serveur qui accèpte cette commande... aucun test possible...

Commentaire de babid le 14/06/2005 09:48:14

Salut,

Excellent, mais petite question pourquoi n'as tu pas créer une class ?? de sorte à utiliser certaines méthodes pour définir les paramètres et d'autres pour utiliser différents types d'envoies (mail, SMTP). Enfin ce n'est qu'un avis, je dois même avoir une class de ce genre mais il faut que je la retrouve, si c'est le cas je vous la mettrai.

Bonne continuation

Commentaire de coucou747 le 14/06/2005 10:06:15 administrateur CS

Pour moi, une class, ce n'est pas quelquechose que l'on peut remplacer facilement par une fonction, ce n'est pas une fonction qui a un grand nombre de paramètres, c'est tout simplement un nouveau type de variable (objets).

En perl, un objet, c'est une table de hash bénit (j'ai jamais fait de perl, mais j'ai lu linux mag), php est dérivé du perl, mais ils n'ont pas le même modèle objet, mais ça ne change rien, un objet, c'est un tas de variable, et des fonctions POUR LES TRAITER, la, les fonctions n'auraient servit qu'a utiliser les variables sans les modifier vraiment (à part message), donc, j'ai fait une fonction et non une class (même si j'ai hésité)...

si j'avais fait une class, je l'aurais appelée Message, et elle aurait permi le dialogue POP3, IMAP, SMTP, et si possible d'autres formes...
il y aurait eu une fonction encodemsg, une fonction decodemsg, et des fonctions d'envoi et de réception, ça c'est un type... Dans les livres sur le C++, on voit souvent des noms communs comme noms de classe, pas des verbes, une class ne doit donc pas faire qu'une seule action...

class Chat{
function Chat($age, $nom){
...
}
function miauler($son){
..
}
function nourrir(){
...
}
var $nom
var $prenom
}

il peut faire plein de choses mon chat, c'est donc un objet, quelquechose qui ne peut faire qu'une chose est une fonction... (un tounre visse est un visseur/dévisseur, il ne peut faire que deux choses, et je ne suis pas sur que ça soit assez pour en faire une class)

faut pas faire de class par effet de mode...

Commentaire de babid le 14/06/2005 10:25:10

Je suis d'accord avoir toi sur le principe de class, je ne dis pas "faut pas faire de class par effet de mode...". Pas du tout, je pensai juste que ce serait plus interressant car tu peux créer plusieurs fonctions comme :
- ajout de message en texte brut
- ajout de message en html
- ajout d'image
- ajout d'une ou plusieurs pieces jointes
- utiliser un modele (entete et pied de page)
- utiliser un modele de fond
- ajout un ou plusieurs destinataires  cachés ou non
- ajout d'un swf
- ....
Donc tu vois bien que je ne parlais pas d'une class avec une seule petite méthode mais plusieurs méthodes qui permette plus de choses.
Voila, en tout merci pour ta réponse.

Bye

Commentaire de Kevin007 le 14/06/2005 18:19:48

Je parlais plutôt d'une fonction retournant la réponse du serveur SMTP à chaque traitement exemple :

Fonction :

function smtp_get_answer()
{

$num_args    = func_num_args();
$code_accept = array();

for ( $i = 0; $i < $num_args; $i++ )
{
$argid = func_get_arg( $i );

if ( is_numeric( $argid ) )
{
$code_accept[] = $argid;
}

else
{
return FALSE;
}
}

return TRUE;
}

Après :

$this -> smtp_send_data( 'EHLO ' . $this -> smtp_server_from );

if ( $this -> smtp_get_answer( 250, FALSE ) )
{
$this -> smtp_send_data( 'HELO ' . $this -> smtp_server_from );

if ( !$this -> smtp_get_answer( 250 ) )
{
if ( !$this -> smtp_critical_error )
{
return FALSE;
}

$this -> smtp_error( 'This SMTP server doesn\'t know &quot;EHLO&quot; or &quot;HELO&quot; SMTP command' );
exit;
}
}

Voilà A+ ( merci pour le MP mais je n'ai rien de personnel à te reprocher, juste ta critique genre "Cette source existe des dizaines et des dizaines de fois..." )

Commentaire de Kevin007 le 14/06/2005 18:21:23

Désolé pour la mise en page mais PHPCS la gère très mal... :D

Commentaire de Kevin007 le 14/06/2005 19:40:30

Il faudrait aussi rajouter l'authentification...
Bref, tu as du travail ;)

Commentaire de coucou747 le 14/06/2005 20:12:45 administrateur CS

je te remercie pour ces idées, j'ai cherché sur le site php.net, j'avais pas vu qu'on pouvait ouvrir des connexions SSL, ils n'en parlent pas énormément (un paragraphe...), mais je vais corriger ça.

donc, grace ç la doc que tu m'as filé, (j'ai un nouveau signet), je vais pouvoir complèter ce script pour la partie authentification...

Commentaire de Antidote le 20/06/2005 19:40:47

Salut Moi j'ai fais ma propre class email, de un parce que parce que quand tu codes un fonction de 25 paramètres que tu ne rempli pas tout le temps et dont tu ne te souvient pas forcément c'est chiant tout simplement. Mais je reconnais que le principes de la classe n'est pas la même si j'y trouve un avantage certain.

Je considère un email comme un objet, parce qu'il gère de nombreux paramètres, dans ma class on peut ajouter, retirer autant de pièces jointe que l'on veut, images dans l'email, accusé de réception ou pas etc ... par contre je ne gère pas la connexion à un serveur mail, j'utilise simplement la fontion mail() qui me suffit amplement. C'est pour ça que j'arrive à cette question :

L'utilité de ce script ? C'est surement très con et stupide et j'ai surement l'esprit fermé sur certaine ouverture que je ne doit pas voir. Mais pourquoi refaire ce que php sait faire ?

Commentaire de coucou747 le 20/06/2005 19:57:54 administrateur CS

ma fonction permet aussi l'accusé de réception, et les pièces jointes...

l'utilité vient du fait qu'on n'a pas partout un serveur smtp pour utiliser la fonction mail...

Commentaire de jimymd64 le 28/07/2005 22:55:39

sur ma page sa marche pas
[url=http://stabno.free.fr/test.php3]http://stabno.free.fr/test.php3[/url]

Commentaire de coucou747 le 30/07/2005 15:06:41 administrateur CS

je croyais que le php était mort...

Commentaire de zoukozouko le 17/09/2005 10:38:07

Antidote, peux tu poster ta source mail STP?
Merci.
Elle a  l'air complete telle que tu la décris...

Commentaire de themioux le 14/12/2005 15:10:45

-----
sur ma page sa marche pas
[url=http://stabno.free.fr/test.php3]http://stabno.free.fr/test.php3[/url]
-----

C'est normal, free refuse les communications sur port 25 avec php (enfin du moins c'est ce que j'ai lu récement sur un autre forum)

Commentaire de coucou747 le 14/12/2005 15:14:06 administrateur CS

si c'est normal, alors pourquoi tu dis ça ici ?

free est l'un des pires hébergeurs du marché... (php3)

Commentaire de themioux le 14/12/2005 15:34:23

Je n'ai fais que répondre à un commentaire d'une personne qui se demande pourquoi ca ne marche pas sur sa page...
or elle est hébergée chez free...
donc cette source ne peut pas fonctionner chez free, ou du moins pas avec un serveur smtp dialoguant sur le port 25...

C'est sympa ici, on apporte une information et aussitot on te dit "pourquoi tu dis ca ici"... ben parce que la question a été posée ici...

Sinon, je viens de tester ta source (parce que j'ai un problème avec la fonction mail() sous win) et j'ai un bug ligne 83 : "Warning: Invalid argument supplied for foreach()" ?!?

Commentaire de coucou747 le 14/12/2005 15:52:11 administrateur CS

ah dsl, je croyais avoir répondu à cette question quand j'ai dit : "je croyais que le php était mort", je voulais dire : "je croyais que le php3 était mort", je n'avais pas encore activé verr num...

Bon, avant, je n'étais pas en error_reporting(E_ALL); j'ai corrigé ce bug depuis quelques temps, mais je n'ai pas pris le temps de mettre à jour, je le fais de suite !

Commentaire de themioux le 14/12/2005 16:02:38

En fait, j'ai trouvé le bug... j'ai pas lu la notice et j'ai pas passé un tableau pour la liste des destinataires :P... bref, ca marche mais ca marche pas (même resultat que la fonction mail(), le mail atteint le serveur, le mail est traité par le serveur, mais le mail n'est pas envoyé RHAAAAAAAAA

j'ai essayé avec un autre serveur (je passait par celui de IIS du boulot)
j'ai installé MySMTP sur la machine avec le serveur apache (easyPhp (parce que c'est pas le même serveur O_o) mais MySMTP me réponds
"500 unknown command"
"500 unknown command"
"500 ....."

je regarderai ca demain, c'est l'heure de la débauche :D

Commentaire de coucou747 le 14/12/2005 16:17:59 administrateur CS

voila comment je le fais chez moi :

$mail=new Mail_();
$mail->set($smtp_serveur);
$mail->setfrom('monmail', 'coucou747');
$a=$mail->send(array($email), array($emailname]), $content, 1, 'sujet', 'HTML');
if ($a[0]===false)
echo 'mail à '.$mail.' impossible à envoyer ! ('.implode($a).')<br />';

Commentaire de themioux le 15/12/2005 09:23:02

salut

c'est marrant, j'avais pas cette source dans l'après midi, j'avais mailBySmtp() :D
T'as fais la mise à jour entre temps ?

Bon, je teste la classe, et je te dis si ca marche :D
-------------------------------------------------------
ligne 18, il manque un t à $timeout ($imeout)
-------------------------------------------------------
ENFIN CA MARCHE :DDDDD

Je vais ENFIN pouvoir finir mon projet :DDDDDD (super source en tout cas, il faudra que je l'étudie de près, parce que là, j'ai fais que du copier coller :D)

Commentaire de coucou747 le 15/12/2005 21:14:02 administrateur CS

super, merci, je suis content de voir que ça sert !

Commentaire de Antidote le 17/12/2005 16:10:44

zoukozouko >>

Si tu veux je te la passe dans l'état actuelle, mais je suis en train de la modifié ^^ Je met un envoie possible avec mail en socket SMTP dans le cas ou y aurait pas de serveur local. de plus j'y rajoute aussi le POP3 pour le SMTP qui n'accepte le relaie qu'après une auth pop ce qui le paramétrage courant aujourd'hui sinon n'importe quel serveur smtp servirai de relai pour du spam.
Et je prépare par dessus tout ça un petit système qui offre le possibilité d'archiver le mail mais aussi de les enregistrer sur le serveur au lieu de les envoyé directement si on le souhaite, tous les mails serais envoyé ensemble toutes les dix minutes (par une tache cron forcément)

Pourquoi ça ? pour ne faire qu'une auth pop et qu'un connexion smtp avec le serveur. c'est plus rapide et ça évite de saturé le serveur avec de multiple sokect etc...

Mon administrateur ma mis en garde. J'ai un de mes site qui génère 5 mails par seconde. Imaginer le nb de socket. je pense que cette méthode sera très utile à un certain nombre.

Commentaire de jemozone le 13/07/2006 10:56:47

Seriez vous assez aimable pour copier-coller le code complet et corrigé (fonctionnant) : je suis novice debutant (en plus autodidacte...ouinnnn)

J'ai copié le code présent en haut de cette page.

puis j'ai lu vos commentaires et ai appliqué les modif ($mail=new Mail_();
$mail->set($smtp_serveur);
$mail->setfrom('monmail', 'coucou747');
$a=$mail->send(array($email), array($emailname]), $content, 1, 'sujet', 'HTML');
if ($a[0]===false)
echo 'mail à '.$mail.' impossible à envoyer ! ('.implode($a).')<br />';) mais là  je suis perdu...

j'arrive pas a adapter....


une question :

comment exploiter ce code (si c possible bien sure) : je sais a peu pret exploiter une fonction mais pas les "class".
Cela signifie t-il que ce code se trouve dans un css et appliquer à un formulaire cette même class ? (comme pour le design d'un site) ou je suis à coté de la plaque ? (merci de m'aiguiller)

encore petite question :

j'ai créé un formulaire "contact" dont voici le code de cette page (fonctionne) :

<html>
<head>
<title>Spad - contact</title>
<link href="spad.css" rel="stylesheet" type="text/css" />
<?php
if ($statut == "ok") {
$message = "Votre message nous a bien été envoyé. Merci et à très bientôt.";
} else {
$message = "";
}
?></head> <body>

<table width="960" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td width="35" height="37" background="images/tab_blanc_trans/coin_haut_gauche.gif">&nbsp;</td>
    <td height="37" background="images/tab_blanc_trans/hauteur_haut.gif">&nbsp;</td>
    <td width="38" height="37"><img src="images/tab_blanc_trans/coin_haut_droit.gif" alt="coin haut droit" width="36" height="37" /></td>
  </tr>
  <tr>
    <td width="35" background="images/tab_blanc_trans/largeur_gauche.gif">&nbsp;</td>
    <td><div align="center"><table width="760" border="0" align="center" cellpadding="0" cellspacing="3" class="table">
<script language="JavaScript">
      // Teste si le mail a une forme correcte
      function checkmail(email) {
         var reg = /^[a-z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,4}$/
         return (reg.exec(email)!=null)
      }
      // Teste le contenu des champs du form avant submit
      function test(civilite,nom,societe,ville,email,message) {
         if(civilite.value=="") {
            alert("Veuillez indiquer votre civilite."); civilite.focus(); return false;
} else if(nom.value=="") {
            alert("Veuillez indiquer votre nom."); nom.focus(); return false;
} else if(prenom.value=="") {
            alert("Veuillez indiquer votre prenom."); prenom.focus(); return false;
} else if(numero.value=="") {
            alert("Veuillez indiquer votre numéro de téléphone."); numero.focus(); return false;
         } else if(!checkmail(email.value)) {
            alert("Votre email est incorrect."); email.focus(); return false;
} else if(sujet.value=="") {
            alert("Veuillez renseigner l'objet de votre demande !"); sujet.focus(); return false;
} else if(message.value=="") {
            alert("Veuillez compléter de votre demande !"); message.focus(); return false;
         }
         return true;
      }
  </script><form action="mail.php" method="post" enctype="multipart/form-data" onSubmit="return test(this.civilite,this.nom,this.prenom,this.numero,this.email,this.sujet,this.message)">
<tr>
<td width="149" valign="top" class="menu_passif"><div align="right"><input type="hidden" name="date" value="<?php setlocale(LC_TIME, 'fr', 'fr_FR', 'fr_FR.ISO8859-1');
echo strftime("%A %d %B %Y"); ?>"><input type="hidden" name="heure" value="<?php echo date('H : i : s'); ?>"></div></td>
<td colspan="3">&nbsp;</td>
</tr>
<tr>
  <td colspan="4" valign="top" class="menu_passif"><div align="center"></div></td>
  </tr>
<tr>
  <td colspan="4" valign="top" class="menu_passif"><div align="center" class="pubrouge_majuscule_clignotant"><?php echo "$message"; ?></div></td>
</tr>
<tr>
  <td colspan="3" valign="top" class="menu_passif"><strong class='pubnoire'><span class="menu_passif"><img src="images/logo.jpg" alt="Spad" width="149" height="95" longdesc="http://www.spad-nord.fr" /></span></strong><strong class='pubrouge'><br>
    S</strong><strong class='pubnoire'>&eacute;curit&eacute;&nbsp;</strong><strong class='pubrouge'>P</strong><strong class='pubnoire'>r&eacute;vention&nbsp;</strong><strong class='pubnoire'>des&nbsp;</strong><strong class='pubrouge'>A</strong><strong class='pubnoire'>ccidents&nbsp;</strong><strong class='pubrouge'>D</strong><strong class='pubnoire'>omestiques</strong>&nbsp;</td>
  <td><div align="right">
    <table width="300" border="0" align="center" cellpadding="0" cellspacing="0">
      <tr>
        <td width="59" height="56" background="images/tab_presentation/bout_gauche.jpg">&nbsp;</td>
        <td background="images/tab_presentation/fond.jpg"><div align="center"><span class="pubnoire">Bienvenue sur le formulaire de</span> <span class="pubrouge_majuscule">contact</span></div></td>
        <td width="36" height="56" background="images/tab_presentation/bout_droit.jpg">&nbsp;</td>
      </tr>
    </table>
  </div></td>
</tr>
<tr>
  <td colspan="4" valign="top" class="menu_passif"><div align="center"></div>    </td>
  </tr>

<tr>
  <td colspan="4" valign="top" class="menu_passif"><hr /></td>
</tr>
<tr>
  <td colspan="4" valign="top" class="menu_passif"><div align="center"><span class="texte_fin">Remplissez ce formulaire en indiquant l'objet de votre demande. Un de nos conseiller vous rappelera au plus vite. </span></div></td>
</tr>
<tr>
  <td colspan="4" valign="top" class="menu_passif"><hr /></td>
  </tr>
<tr>
  <td valign="middle" class="menu_passif"><div align="right"></div></td>
  <td colspan="3">&nbsp;</td>
</tr>
<tr>
  <td valign="middle" class="menu_passif"><div align="right">Civilit&eacute;<span class="menu_actif">*</span> : </div></td>
  <td colspan="3"><span class="comcarre">
    <select name="civilite" class="inputs" id="civilite">
      <option value="Mr" selected="selected">Mr</option>
      <option value="Mme">Mme</option>
      <option value="Mlle">Mlle</option>
    </select>
  </span></td>
</tr>
<tr>
  <td valign="middle" class="menu_passif"><div align="right">Nom<span class="menu_actif">*</span> : </div></td>
  <td width="194"><input name="nom" type="text" id="nom" size="24" /></td>
  <td width="173" class="menu_passif"><div align="right">Pr&eacute;nom<span class="menu_actif">*</span> : </div></td>
  <td width="323"><input name="prenom" type="text" id="prenom" size="24" /></td>
</tr>
<tr>
  <td valign="middle" class="menu_passif"><div align="right">Courriel<span class="menu_actif">*</span> : </div></td>
  <td><input name="email" type="text" id="email" size="24" value="@" /></td>
  <td class="menu_passif"><div align="right">T&eacute;l&eacute;phone<span class="menu_actif">*</span> : </div></td>
  <td><input name="numero" type="text" id="numero" size="24" /></td>
</tr>
<tr>
<td valign="middle" class="menu_passif"><div align="right">Priorit&eacute;<span class="menu_actif">*</span> : </div></td>
<td><span class="menu_actif">
  <select name="priority" id="priority" size="1">
    <option value="Urgent">Urgent </option>
    <option value="Haute">Haute </option>
    <option value="Moyenne">Moyenne </option>
    <option value="Basse">Basse </option>
    <option value="Tr&egrave;s basse" selected>Tr&egrave;s basse </option>
  </select>
</span></td>
<td class="menu_passif"><div align="right">Mobile : </div></td>
<td><input name="mobile" type="text" id="mobile" size="24" /></td>
</tr>
<tr>
  <td colspan="4" valign="middle" class="menu_passif"><div align="center">
    <hr>
  </div>    <div align="center"></div></td>
  </tr>
<tr>
  <td colspan="4" valign="middle" class="menu_passif"><hr></td>
</tr>
<tr>
  <td colspan="4" valign="middle" class="menu_passif"><table width="654" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr>
      <td width="326"><p align="center" class="texte">Vous souhaitez<span class="menu_actif">*</span> : </p>
        <div align="center">
          <table cellspacing=2 cellpadding=1 >
            <tr>
              <td valign=top><input  type="radio" name="type_demande" value="info / recevoir plaquette commerciale" ></td>
              <td class="menu_passif">Recevoir une plaquette commerciale</td>
            </tr>
            <tr>
              <td><input  type="radio" name="type_demande" value="Poser une question" ></td>
              <td class="menu_passif">Poser une question</td>
            </tr>
            <tr>
              <td><input  type="radio" name="type_demande" value="Devis / Diagnostic" checked></td>
              <td class="menu_passif">Demander un devis / expertise </td>
            </tr>
            <tr>
              <td><input  type="radio" name="type_demande" value="r&eacute;clamation" ></td>
              <td class="menu_passif">Faire une r&eacute;clamation/suggestion</td>
            </tr>
            <tr>
              <td><input  type="radio" name="type_demande" value="&ecirc;tre rappel&eacute;" ></td>
              <td class="menu_passif">Etre rappel&eacute; par un conseill&eacute; <span class="menu_actif">Spad</span>  </td>
            </tr>
                </table>
        </div></td>
      <td width="328"><div align="center"><span class="texte">Concernant la solution<span class="menu_actif">*</span> :<br>
          <br>
        </span>
          <table cellspacing=2 cellpadding=1 >
              <tr>
                <td><input  type="radio" name="type_produit" value="D&eacute;tecteurs incendie" checked></td>
                <td class="menu_passif">D&eacute;tecteurs incendie </td>
              </tr>
              <tr>
                <td><input  type="radio" name="type_produit" value="D&eacute;tecteurs Monoxyde" ></td>
                <td class="menu_passif">D&eacute;tecteurs Monoxyde carbone </td>
              </tr>
              <tr>
                <td><input  type="radio" name="type_produit" value="Installation / Intervention" ></td>
                <td class="menu_passif">Installation/intervention</td>
              </tr>
              <tr>
                <td><input  type="radio" name="type_produit" value="Maintenance" ></td>
                <td class="menu_passif">Maintenance</td>
              </tr>
              <tr>
                <td><input  type="radio" name="type_produit" value="Echange Standard" ></td>
                <td class="menu_passif">Echange standard </td>
              </tr>
              <tr>
                <td><input  type="radio" name="type_produit" value="Garantie" ></td>
                <td class="menu_passif">Garantie</td>
              </tr>
              <tr>
                <td><input  type="radio" name="type_produit" value="Partenariat" ></td>
                <td class="menu_passif">Partenariat</td>
              </tr>
                    </table>
      </div></td>
    </tr>
  </table></td>
  </tr>
<tr>
  <td colspan="4" valign="middle" class="menu_passif"><hr></td>
  </tr>

<tr>
  <td colspan="4" valign="middle" class="menu_passif"><div align="center">Votre Message<span class="menu_actif">*</span> : </div></td>
  </tr>
<tr>
  <td colspan="4" valign="middle" class="menu_passif"><hr></td>
</tr>
<tr>
  <td valign="middle" class="menu_passif"><div align="right">Objet  <span class="menu_actif">*</span> : </div></td>
  <td colspan="3" valign="middle" class="menu_passif"><input name="sujet" type="text" id="sujet" size="80" /></td>
  </tr>
<tr>
  <td colspan="4" valign="middle" class="menu_passif"><div align="center">
  
  </div></td>
  </tr>
<tr>
<td valign="middle" class="menu_passif"><div align="right">Message<span class="menu_actif">*</span> : </div></td>
<td colspan="3"><textarea name="message" cols="80" rows="5" id="message"></textarea></td>
</tr>
<tr>
<td colspan="4" valign="middle"><div align="right"><hr></div></td>
</tr>
<tr>
  <td colspan="2" valign="middle"><div align="right"><span class="comcarre"><span class="menu_passif">Je d&eacute;sire recevoir la lettre d'information de </span><span class="menu_actif">Spad-nord.fr</span></span></div></td>
  <td><span class="menu_actif">
    <input name="newsletter" type="checkbox" id="newsletter" value="Oui" />
  </span></td>
  <td>&nbsp;</td>
</tr>
<tr>
<td colspan="4" valign="top"><div align="left">
  <hr />
</div>  <div align="center"></div></td>
</tr>
<tr>
  <td height="26" colspan="4" valign="middle"><div align="center" class="menu_actif">Avant de cliquer sur le bouton &quot;Envoyer&quot; <br />
    V&eacute;rifiez bien que vous avez remplis tout les champs marqu&eacute;s d'une ast&eacute;rix *</div></td>
</tr>
<tr>
  <td height="26" colspan="4" valign="middle"><hr /></td>
</tr>
<tr>
  <td colspan="4" valign="top"><div align="center">
    <input type="hidden" name="ip" id="ip" value="<? echo $REMOTE_ADDR ?>" />
    <input name="submit" type="submit" id="submit" value="Submit" />
  </div></td>
</tr>
</form>
</table>
    </div></td>
    <td width="38" background="images/tab_blanc_trans/largeur_droit2.gif">&nbsp;</td>
  </tr>
  <tr>
    <td width="35" height="33" background="images/tab_blanc_trans/coin_bas_gauche.gif">&nbsp;</td>
    <td height="33" background="images/tab_blanc_trans/bas.gif">&nbsp;</td>
    <td height="33" background="images/tab_blanc_trans/coin_bas_droit.gif">&nbsp;</td>
  </tr>
</table>
</body>
</html>


Avec la class d'envoie, je souhaiterai, une fois ce formulaire rempli et validé (envoyé), recevoir par email le contenu de ce formulaire MAIS INCLUANT LE DESIGN.

voici comment le contenu du mail que je souhaite recevoir :

"<html><body>
<link href=\"http://www.spad-nord.fr/spad.css\" rel='stylesheet' type='text/css'><table width='960' border='0' align='center' cellpadding='0' cellspacing='0'>
  <tr>
    <td width='35' height='37' background=\"http://www.spad-nord.fr/images/tab_blanc_trans/coin_haut_gauche.gif\">&nbsp;</td>
    <td height='37' background=\"http://www.spad-nord.fr/images/tab_blanc_trans/hauteur_haut.gif\">&nbsp;</td>
    <td width='38' height='37'><img src=\"http://www.spad-nord.fr/images/tab_blanc_trans/coin_haut_droit.gif\" alt='coin haut droit' width='36' height='37' /></td>
  </tr>
  <tr>
    <td width='35' background=\"http://www.spad-nord.fr/images/tab_blanc_trans/largeur_gauche.gif\">&nbsp;</td>
    <td><table width='797' border='0' align='center' cellpadding='0' cellspacing='3' class='table'>
<tr>
  <td width='91' valign='top'><span class='menu_passif'><img src=\"http://www.spad-nord.fr/images/logo.jpg\" alt='Spad' width='149' height='95'/></span></td>
  <td colspan='2'><strong class='pubrouge'>S<span class='pubnoire'>&eacute;curit&eacute;&nbsp;</span>P<span class='pubnoire'>r&eacute;vention&nbsp; des&nbsp;</span>A<span class='pubnoire'>ccidents&nbsp;</span>D<span class='pubnoire'>omestiques</span>&nbsp;</strong></td>
  <td align='right'>
    <table width='300' border='0' align='center' cellpadding='0' cellspacing='0'>
      <tr>
        <td width='59' height='56' background=\"http://www.spad-nord.fr/images/tab_presentation/bout_gauche.jpg\">&nbsp;</td>
        <td background=\"http://www.spad-nord.fr/images/tab_presentation/fond.jpg\" align='center'><a class='pubnoire'>www.spad-nord.fr <br> </a><a class='pubrouge'>contact</a></td>
        <td width='36' height='56' background=\"http://www.spad-nord.fr/images/tab_presentation/bout_droit.jpg\">&nbsp;</td>
      </tr>
    </table>
</td>
</tr>
<tr>
  <td colspan='4'align='center'>
    <p ><span class='pubnoire'>$civilite&nbsp;</span><span class='pubrouge'>$nom</span><span class='pubnoire'> nous a contacté </span></p><br><span class='pubnoire'>le </span><span class='pubrouge'>$date</span><span class='pubnoire'> à </span><span class='pubrouge'>$heure</span>
    </td>
  </tr>
<tr>
  <td colspan='4' valign='middle' class='menu_passif'><hr size='1'></td>
</tr>
<tr>
  <td colspan='4' valign='middle'><p class='menu_passif' align='center'><span class='texte_fin'>L'ip enregistr&eacute; pour ce contact est : </span><span class='texte_bold'>$ip</span></p></td>
</tr>
<tr>
  <td colspan='4' valign='middle'><p class='menu_passif'><hr size='1'></p></td>
  </tr>
<tr>
  <td valign='middle' class='menu_passif'><p align='right'></p></td>
  <td colspan='3' valign='middle'>&nbsp;</td>
</tr>
<tr>
  <td valign='middle'><p class='menu_passif' align='right'>Civilit&eacute;<span class='menu_actif'>*</span> : </p></td>
  <td colspan='3' valign='middle' class='menu_passif'>$civilite</td>
</tr>
<tr>
  <td valign='middle'><p class='menu_passif' align='right'>Nom<a class='menu_actif'>*</a> : </p></td>
  <td width='194' valign='middle'><p class='menu_actif'>$nom</p></td>
  <td width='213' valign='middle'><p class='menu_passif' align='right'>Pr&eacute;nom<a class='menu_actif'>*</a> : </p></td>
  <td width='284' valign='middle'><span class='menu_actif'>$prenom</p></td>
</tr>
<tr>
  <td valign='middle'><p class='menu_passif' align='right'>Courriel<a class='menu_actif'>*</a> : </p></td>
  <td valign='middle'><p class='menu_actif'>$email</p></td>
  <td valign='middle'><p class='menu_passif' align='right'>T&eacute;l&eacute;phone<a class='menu_actif'>*</a> : </p></td>
  <td valign='middle'><strong class='pubrouge'>$numero</strong></td>
</tr>
<tr>
<td valign='middle'><p class='menu_passif' align='right'>Priorit&eacute;<a class='menu_actif'>*</a> : </p></td>
<td valign='middle'><p class='menu_passif'>$priority</p></td>
<td valign='middle'><p class='menu_passif' align='right'>Mobile : </p></td>
<td valign='middle'><p class='pubrouge'>$mobile</p></td>
</tr>
<tr>
  <td colspan='4' valign='middle'><p align='center'></p>
  </td>
  </tr>
<tr>
  <td colspan='4' valign='middle'><p class='menu_passif'><hr size='1'></p></td>
</tr>
<tr>
  <td colspan='4' valign='middle'><span class='menu_passif'><table width='782' border='0' cellpadding='0' cellspacing='0'>
    <tr>
      <td width='326' height='150'><p align='center' class='texte_bold'>$civilite $nom  souhaite:</p>
          <p align='center' class='pubrouge_majuscule_clignotant'>$type_demande</p></td>
      <td width='328' height='150'><p align='center' class='texte_bold'>Concernant la solution :</p>
          <p align='center'><span class='pubrouge_majuscule_clignotant'>$type_produit</span></p></td>
    </tr>
  </table></span></td>
  </tr>
<tr>
  <td colspan='4' valign='middle'><p class='menu_passif'><hr size='1'></p></td>
  </tr>

<tr>
  <td colspan='4' valign='middle'><p class='menu_passif' align='center'>Votre Message<a class='menu_actif'>*</a></p></td>
  </tr>
<tr>
  <td colspan='4' valign='middle'><p class='menu_passif'><hr size='1'></p></td>
</tr>
<tr>
  <td valign='middle' ><a class='menu_passif' align='right'>Objet</a><a class='menu_actif'>*</a> : </td>
  <td colspan='3' valign='middle'><span class='menu_passif'>$sujet</span></td>
  </tr>
<tr>
  <td colspan='4' valign='middle'></td>
  </tr>
<tr>
<td valign='middle'><p class='menu_passif' align='right'>Message<a class='menu_actif'>*</a> : </p></td>
<td colspan='3' valign='middle'><strong class='texte' align='justify'>$message</strong></td>
</tr>
<tr>
<td colspan='4' valign='middle' align='right'><hr size='1'></td>
</tr>
<tr>
<td height='30' colspan='2' valign='middle'><strong align='right'><span class='menu_passif'>Je d&eacute;sire recevoir la lettre d'information de </span><span class='menu_actif'>Spad-nord.fr</span><span class='menu_passif'> :</span></strong></td>
<td valign='middle'><strong class='menu_actif'>$newsletter</strong></td>
<td valign='middle'>&nbsp;</td>
</tr>
<tr>
  <td height='26' colspan='4' valign='middle'>&nbsp;</td>
</tr>
<tr>
  <td colspan='4' valign='top'><strong align='center'></strong>
</td>
</tr>
</table></td>
    <td width='38' background=\"http://www.spad-nord.fr/images/tab_blanc_trans/largeur_droit2.gif\">&nbsp;</td>
  </tr>
  <tr>
    <td width='35' height='33' background=\"http://www.spad-nord.fr/images/tab_blanc_trans/coin_bas_gauche.gif\">&nbsp;</td>
    <td height='33' background=\"http://www.spad-nord.fr/images/tab_blanc_trans/bas.gif\">&nbsp;</td>
    <td height='33' background=\"http://www.spad-nord.fr/images/tab_blanc_trans/coin_bas_droit.gif\">&nbsp;</td>
  </tr>
</table></body></html>

Pourriez vous m'expliquer comment et ou dois je mettre le contenu pour le recevoir dans la page "class_mail.php" (le formulaire portera bien entendu le nom de la class)

est il possible de creer la page reponse (sous dreamweaver), copier-coller le code de cette page (incluant les $contenu du formulaire) dans msg ?


bref je suis completement paumé. pouvez vous m'aider ? merci

Commentaire de coucou747 le 13/07/2006 13:27:25 administrateur CS

stp... tu aurais pu éviter de coller "toute" ta source... uniquement le php, ça aurait suffit...

$mail=new Mail_();
$mail->set('smtp.wanadoo.fr');
$mail->setfrom('bob@bob.fr', 'coucou747');
$a=$mail->send(array('bob@bob.com'), array('alice@alice.com'),'Salut, comment ça va ?', 1, '(k)', 'HTML');
if ($a[0]===false){
echo 'mail à impossible à envoyer ! ('.implode($a).')<br />';
$i--;
$er++;
}


ça s'utilise comme une fonction, ça n'a rien à avoir avec les CSS... et lis la doc un peu...

Commentaire de coucou747 le 13/07/2006 13:27:34 administrateur CS

stp... tu aurais pu éviter de coller "toute" ta source... uniquement le php, ça aurait suffit...

$mail=new Mail_();
$mail->set('smtp.wanadoo.fr');
$mail->setfrom('bob@bob.fr', 'coucou747');
$a=$mail->send(array('bob@bob.com'), array('alice@alice.com'),'Salut, comment ça va ?', 1, '(k)', 'HTML');
if ($a[0]===false){
echo 'mail à impossible à envoyer ! ('.implode($a).')<br />';
$i--;
$er++;
}


ça s'utilise comme une fonction, ça n'a rien à avoir avec les CSS... et lis la doc un peu...

Commentaire de jemozone le 13/07/2006 14:25:44

ok merci pour l'info.

la doc je l'ai lu : apprendre tout seul le php c'est pas évident pour tout le monde.

Concernant le collage de la source >> excuse, j'y ai pas pensé...mais je voulais être clair...



pour l'adapter :

$mail=new Mail_();
$mail->set('serveur.envoie.mail');
$mail->setfrom('$email', '$nom');

//pour recuperer données du formulaire (c'est ça ? ou dois je exploiter "$mail->setfrom($_POST['email']; $_POST['nom'];) ?

puis

$a=$mail->send(array('monadresse@monsite.fr'),'message en provenance du site', 1, '(k)', 'HTML');
if ($a[0]===false){
echo 'mail à impossible à envoyer ! ('.implode($a).')<br />';
$i--;
$er++;
}

>>>>  cette fonction se place où exactement ? à la place de "function send" (remplacer le code present de la ligne 26 à 44 ou encore de la ligne 26 à la fin ) ?

et pour recevoir le contenu html de ma page réponse (voir 2eme post ci dessus), dois je coller le code de cette page ? si oui où et de quelle manière? (je ne repost pas le code déjà present 3 post au dessus de celui ci.

merci pour vos reponses et désolé si mes questions sont.... bebete. (soyez fairplay, j'apprend) merci encore

Commentaire de coucou747 le 13/07/2006 14:31:52 administrateur CS

$mail->setfrom('$email', '$nom');

les $var ne sont pas remplacées par leurs valeur lorsqu'elles sont entre des simples quotes...


$mail->setfrom($_POST['email']; $_POST['nom'];) ?

pourquoi des ; ?

ensuite, tu mets : $a=$mail->send(array('monadresse@monsite.fr'),'message en provenance du site', 1, '(k)', 'HTML');
moi j'avais mis : $a=$mail->send(array('bob@bob.com'), array('alice@alice.com'),'Salut, comment ça va ?', 1, '(k)', 'HTML');

j'ai deux tableaux, t'en as qu'un... le premier tableau est en fait le mail des destinataires, le second leur nom... (k) c'était le sujet du mail...

Commentaire de jemozone le 13/07/2006 14:36:26

le but est :

a partir d'un formulaire, envoyer les données de ce formulaire par mail au format html incluant les $ qui m'interesse. l'email que je reçois est MIS EN PAGE (design)(voir code "page reponse").

(php envoie la page reponse complété des infos remplis dans le formulaire)
si je veux mettre le code de la page que je souhaite recevoir dans (par ex $msg=.  "code html de ma page"), quelles sont les regles d'ecriture du code pour que php et le client mail l'interprete correctement ? (pour les liens je sais que je dois faire "\http://www.lien.fr"\, j'ai remarqué aussi que php n'aime pas les DIV... )

j'ai vraiment du mal a m'expliquer... je suis desolé...


Commentaire de coucou747 le 13/07/2006 14:39:02 administrateur CS

"j'ai remarqué aussi que php n'aime pas les DIV..."=> bah oui évidement.... t'auras dit beaucoup de bétises aujourd'hui...

Commentaire de jemozone le 13/07/2006 14:42:32

si tu le permet je colle un code qui marche (qui n'est pas de moi, mais de ST3 Design). j'ai collé le code de ma page. je recois le mail avec les données donc génial. Mais la mise en page a du mal a être respecté (point d'exclamation redondant, image n'apparaissant plus... des details vachement embetant).

en esperant que tu sois pas faché pour ce deuxieme collage de code :


<?php
// Il ne faut rien changer ci-dessous si vous désirez que ça marche
// Boundary = Frontière en Anglais
$boundary = "-----=".md5(uniqid(rand()));

// Ici, on construit un entête contenant les informations
// Ici non plus, vous ne devez rien changer
// Version du format MIME utilisé
$header = "MIME-Version: 1.0\r\n";
// Boundary = Frontière en Anglais
$header .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
$header .= "\r\n";

//--------------------------------------------------
// Construction du message proprement dit
//--------------------------------------------------

// Pour le cas, où le logiciel de mail du destinataire
// n'est pas capable de lire le format MIME de cette version
// Il est de bon ton de l'en informer
// Ce message n'apparaît pas pour les logiciels sachant lire ce format
$msg = "Je vous informe que ceci est un message au format MIME 1.0 multipart/mixed.\r\n";

// Chaque partie du message est séparé par une frontière
$msg .= "--$boundary\r\n";

// Et pour chaque partie on en indique le type
$msg .= "Content-Type: text/html; charset=\"iso-8859-1\"\r\n";
// Et comment il sera codé
$msg .= "Content-Transfer-Encoding:8bit\r\n";
// Il est indispensable d'introduire une ligne vide entre l'entête et le texte
$msg .= "\r\n";
// Enfin, vous pouvez écrire votre Message ici
// Je vais vous expliquer comment faire votre description plus bas
$msg .= "<html><body>
<link href=\"http://www.spad-nord.fr/spad.css\" rel='stylesheet' type='text/css'>";
$msg .= "<table width='960' border='0' align='center' cellpadding='0' cellspacing='0'>
  <tr>
    <td width='35' height='37' background=\"http://www.spad-nord.fr/images/tab_blanc_trans/coin_haut_gauche.gif\">&nbsp;</td>
    <td height='37' background=\"http://www.spad-nord.fr/images/tab_blanc_trans/hauteur_haut.gif\">&nbsp;</td>
    <td width='38' height='37'><img src=\"http://www.spad-nord.fr/images/tab_blanc_trans/coin_haut_droit.gif\" alt='coin haut droit' width='36' height='37' /></td>
  </tr>
  <tr>
    <td width='35' background=\"http://www.spad-nord.fr/images/tab_blanc_trans/largeur_gauche.gif\">&nbsp;</td>
    <td><table width='797' border='0' align='center' cellpadding='0' cellspacing='3' class='table'>
<tr>
  <td width='91' valign='top'><span class='menu_passif'><img src=\"http://www.spad-nord.fr/images/logo.jpg\" alt='Spad' width='149' height='95'/></span></td>
  <td colspan='2'><strong class='pubrouge'>S<span class='pubnoire'>&eacute;curit&eacute;&nbsp;</span>P<span class='pubnoire'>r&eacute;vention&nbsp; des&nbsp;</span>A<span class='pubnoire'>ccidents&nbsp;</span>D<span class='pubnoire'>omestiques</span>&nbsp;</strong></td>
  <td align='right'>
    <table width='300' border='0' align='center' cellpadding='0' cellspacing='0'>
      <tr>
        <td width='59' height='56' background=\"http://www.spad-nord.fr/images/tab_presentation/bout_gauche.jpg\">&nbsp;</td>
        <td background=\"http://www.spad-nord.fr/images/tab_presentation/fond.jpg\" align='center'><a class='pubnoire'>www.spad-nord.fr <br> </a><a class='pubrouge'>contact</a></td>
        <td width='36' height='56' background=\"http://www.spad-nord.fr/images/tab_presentation/bout_droit.jpg\">&nbsp;</td>
      </tr>
    </table>
</td>
</tr>
<tr>
  <td colspan='4'align='center'>
    <p ><span class='pubnoire'>$civilite&nbsp;</span><span class='pubrouge'>$nom</span><span class='pubnoire'> nous a contacté </span></p><br><span class='pubnoire'>le </span><span class='pubrouge'>$date</span><span class='pubnoire'> à </span><span class='pubrouge'>$heure</span>
    </td>
  </tr>
<tr>
  <td colspan='4' valign='middle' class='menu_passif'><hr size='1'></td>
</tr>
<tr>
  <td colspan='4' valign='middle'><p class='menu_passif' align='center'><span class='texte_fin'>L'ip enregistr&eacute; pour ce contact est : </span><span class='texte_bold'>$ip</span></p></td>
</tr>
<tr>
  <td colspan='4' valign='middle'><p class='menu_passif'><hr size='1'></p></td>
  </tr>
<tr>
  <td valign='middle' class='menu_passif'><p align='right'></p></td>
  <td colspan='3' valign='middle'>&nbsp;</td>
</tr>
<tr>
  <td valign='middle'><p class='menu_passif' align='right'>Civilit&eacute;<span class='menu_actif'>*</span> : </p></td>
  <td colspan='3' valign='middle' class='menu_passif'>$civilite</td>
</tr>
<tr>
  <td valign='middle'><p class='menu_passif' align='right'>Nom<a class='menu_actif'>*</a> : </p></td>
  <td width='194' valign='middle'><p class='menu_actif'>$nom</p></td>
  <td width='213' valign='middle'><p class='menu_passif' align='right'>Pr&eacute;nom<a class='menu_actif'>*</a> : </p></td>
  <td width='284' valign='middle'><span class='menu_actif'>$prenom</p></td>
</tr>
<tr>
  <td valign='middle'><p class='menu_passif' align='right'>Courriel<a class='menu_actif'>*</a> : </p></td>
  <td valign='middle'><p class='menu_actif'>$email</p></td>
  <td valign='middle'><p class='menu_passif' align='right'>T&eacute;l&eacute;phone<a class='menu_actif'>*</a> : </p></td>
  <td valign='middle'><strong class='pubrouge'>$numero</strong></td>
</tr>
<tr>
<td valign='middle'><p class='menu_passif' align='right'>Priorit&eacute;<a class='menu_actif'>*</a> : </p></td>
<td valign='middle'><p class='menu_passif'>$priority</p></td>
<td valign='middle'><p class='menu_passif' align='right'>Mobile : </p></td>
<td valign='middle'><p class='pubrouge'>$mobile</p></td>
</tr>
<tr>
  <td colspan='4' valign='middle'><p align='center'></p>
  </td>
  </tr>
<tr>
  <td colspan='4' valign='middle'><p class='menu_passif'><hr size='1'></p></td>
</tr>
<tr>
  <td colspan='4' valign='middle'><span class='menu_passif'><table width='782' border='0' cellpadding='0' cellspacing='0'>
    <tr>
      <td width='326' height='150'><p align='center' class='texte_bold'>$civilite $nom  souhaite:</p>
          <p align='center' class='pubrouge_majuscule_clignotant'>$type_demande</p></td>
      <td width='328' height='150'><p align='center' class='texte_bold'>Concernant la solution :</p>
          <p align='center'><span class='pubrouge_majuscule_clignotant'>$type_produit</span></p></td>
    </tr>
  </table></span></td>
  </tr>
<tr>
  <td colspan='4' valign='middle'><p class='menu_passif'><hr size='1'></p></td>
  </tr>

<tr>
  <td colspan='4' valign='middle'><p class='menu_passif' align='center'>Votre Message<a class='menu_actif'>*</a></p></td>
  </tr>
<tr>
  <td colspan='4' valign='middle'><p class='menu_passif'><hr size='1'></p></td>
</tr>
<tr>
  <td valign='middle' ><a class='menu_passif' align='right'>Objet</a><a class='menu_actif'>*</a> : </td>
  <td colspan='3' valign='middle'><span class='menu_passif'>$sujet</span></td>
  </tr>
<tr>
  <td colspan='4' valign='middle'></td>
  </tr>
<tr>
<td valign='middle'><p class='menu_passif' align='right'>Message<a class='menu_actif'>*</a> : </p></td>
<td colspan='3' valign='middle'><strong class='texte' align='justify'>$message</strong></td>
</tr>
<tr>
<td colspan='4' valign='middle' align='right'><hr size='1'></td>
</tr>
<tr>
<td height='30' colspan='2' valign='middle'><strong align='right'><span class='menu_passif'>Je d&eacute;sire recevoir la lettre d'information de </span><span class='menu_actif'>Spad-nord.fr</span><span class='menu_passif'> :</span></strong></td>
<td valign='middle'><strong class='menu_actif'>$newsletter</strong></td>
<td valign='middle'>&nbsp;</td>
</tr>
<tr>
  <td height='26' colspan='4' valign='middle'>&nbsp;</td>
</tr>
<tr>
  <td colspan='4' valign='top'><strong align='center'></strong>
</td>
</tr>
</table></td>
    <td width='38' background=\"http://www.spad-nord.fr/images/tab_blanc_trans/largeur_droit2.gif\">&nbsp;</td>
  </tr>
  <tr>
    <td width='35' height='33' background=\"http://www.spad-nord.fr/images/tab_blanc_trans/coin_bas_gauche.gif\">&nbsp;</td>
    <td height='33' background=\"http://www.spad-nord.fr/images/tab_blanc_trans/bas.gif\">&nbsp;</td>
    <td height='33' background=\"http://www.spad-nord.fr/images/tab_blanc_trans/coin_bas_droit.gif\">&nbsp;</td>
  </tr>
</table>
";
$msg .= "</body></html>";
$msg .= "\r\n";

// Tout d'abord lire le contenu du fichier
//$file = "$fic_attache";

// puis convertir le contenu du fichier en une chaîne de caractère
// certe totalement illisible mais sans caractères exotiques
// et avec des retours à la ligne tout les 76 caractères
// pour être conforme au format RFC 2045
//$attachment = chunk_split(base64_encode($attachment));

// Ne pas oublier que chaque partie du message est séparé par une frontière
//$msg .= "--$boundary\r\n";
// Et pour chaque partie on en indique le type
//$msg .= "Content-Type: $typemime; name=\"$file\"\r\n";
// Et comment il sera codé
//$msg .= "Content-Transfer-Encoding: base64\r\n";
// Petit plus pour les fichiers joints
// Il est possible de demander à ce que le fichier
// soit si possible affiché dans le corps du mail
//$msg .= "Content-Disposition: attachment; filename=\"$file\"\r\n";
// Il est indispensable d'introduire une ligne vide entre l'entête et le texte
//$msg .= "\r\n";
// C'est ici que l'on insère le code du fichier lu
//$msg .= $attachment . "\r\n";
//$msg .= "\r\n\r\n";

// voilà, on indique la fin par une nouvelle frontière
//$msg .= "--$boundary--\r\n";

$destinataire = "mon adresse email";
$expediteur = "$email";
$reponse = $expediteur;
mail($destinataire, "le sujet du message", $msg,
"Reply-to: $reponse\r\nFrom: $expediteur\r\n".$header);
header("Location: index.php?redirection"); ?>


voila. ce code marche mais je fais des fautes d'ecritures qui sont mal interprété. si vous pouviez me dire ou sont les erreurs...

Commentaire de jemozone le 13/07/2006 14:51:54

je parle ud code entre

$msg .= "</body></html>";

et

$msg .= "</body></html>";

tout le reste marche nickel.

j'ai des erreurs de type (point d'exclamation redondant, class qui ne s'applique pas...(en fonction des balises exploitées (strong, span, a)...bref des betises mais bien ennuyeuses.

je galère la dessus depuis 4 jours sans arriver à un affichage parfait !!!

quelles sont les règles a respecter que je ne respectess pas ?

ç'est ça ma vrai question. (pour que j'avance vraiment)

merci pour votre aide...
(et desolé encore pour ce re-copie-colle de code)

Commentaire de jemozone le 13/07/2006 14:53:41

mieux vaut dire des betises que de rester dans sa betise. au moins, le monde avance.

Commentaire de coucou747 le 13/07/2006 14:59:38 administrateur CS

là tu polues ma source... tu postes du code html sans interet... on est sur un forom php là...

http://coucou747.hopto.org/article_35.html

lis ça... ça t'aidera surement à mieux coder

Commentaire de ced0072 le 06/12/2006 11:36:13

Tout d'abord merci pour cette classe qui fonctionne parfaitement.
Et puis petite question: comment faire si je veux définir une adresse "reply to" differente du "from"?
Je suppose que ce n'est pas compliqué et qu'il faut juste utiliser la bonne syntaxe au bon endroit mais si tu peux m'aider ce serait cool.

Commentaire de coucou747 le 07/12/2006 12:59:00 administrateur CS

ça doit être dans les headers, mais je ne sais plus ou...

Commentaire de totomaze le 10/03/2008 17:48:38

Bonjour,

Cette clase marche bien, mais j'ai un probleme avec les pièces jointes, lorsque j'ouvre le message la pièces jointe est afficher dans le corps du message (messagerie lotus). (Il doit surement manquer un petit quelque chose)

(Lorsque j'envoi un mail avec une piece jointe sur hotmail la pièce jointe est bien reconnu)

Commentaire de niceman23 le 12/04/2008 04:51:25

Salut bien beau avoir cette source . Mais j'ai pas de tableau pour le faire fonctionner ... Je sais meme pas quoi faire avec cette bout de code ... Éclairsiser moi . Parce que la , j'ai surment un sendmail avec piece join mais rien pour le faire fonctionner


@+

Commentaire de crazygogo le 02/10/2008 11:19:38 9/10

bien, juste 1 soucis en cas de PJ :

Fatal error: Call to undefined function coupe() in mail.class.php on line 72

Commentaire de crazygogo le 02/10/2008 11:48:59

je sais pas si j'ai bien compris mais à la place de :

$r.coupe(base64_encode(file_get_contents($a)),72).'--'.$boundary;
if ($n==$end)
$message.='--'.$r;
else
$message.=$r;


j'ai bidouillé:

$tmp=$this->coupe(base64_encode(file_get_contents($a)),72).'--'.$boundary;
if ($n==$end)
$message.=$tmp.'--'.$r;
else
$message.=$tmp;


???????????????????????????

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

besoin d'aide svp fonction mail() [ par yomm ] voila, je doit envoyer des mails, pour cela j'utilise la fonction mail.j'utilise le serveur smtp de ifrance , ayant moi meme une adresse chez eux, le mail en smtp [ par gemelos ] voici mon code:fputs ($connection , "MAIL FROM: &lt;$email&gt;\n");$result =fgets ($connection ,256 );print("$result&lt;br&gt;");fputs ($connection , Serveur SMTP entièrement compatible avec la fonction mail() [ par vsss ] BonsoirJe cherche un serveur smtp, qui me permet d'envoyer des mail a partir de la fonction mail() en utilisant n'importe quel variable.Merci fonction mail en local [ par frop01 ] Salut les phpcsistes.Je sais bien que le thème est dèjà abordé sur ce forum ainsi que d'autres mais j'arrive toujours pas à faire fonctionner mail() e Gestion commande MAIL [ par electroweb ] Bonjour &#224; tous.Je dois migrer plusieurs sites ASP en PHP. Les sites sont sur le m&#234;me serveur. Chaque site utilise une messagerie diff&#233;r php.ini [ par henri12 ] salut je viens d'envoyer un email avec easyephp je trouve pas de fichier php.ini j ai trouver phpsafe.ini dans le repertoire de easyphp es celui la Socket : Adresse d'un serveur [ par Leneuf8000 ] Bonjour, voil&#224;, j'ai trouv&#233; des sripts permettant l'envoi de mail et qui utilise la fonction fsockopen, or comme j'ai un probl&#232;me pour Envoi de MAIL gros probleme [ par boopette ] Bonjourjai un gros probleme je narrive pas a envoyer de mailsjai utilise la fonction MAIL() de PHP et des fonction de mail en SMTPjai des erreurs:fonc Serveur SMTP [ par Marion0904 ] Bonsoir, J'essai d'nvoyer des mails en utilisant la class phpmailer (disponible sur&nbsp; http://phpmailer.sourceforge.net/). J'incu la class php mail easyphp et mail() [ par mictif ] Bonjour... ou bonsoir ;) Je code un site en locale pour ensuite le mettre en ligne une fois termin&#233;.J'utilise easyphp pour cela. J'ai un problem


Nos sponsors


Sondage...

Comparez les prix

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 : 4,961 sec (3)

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