Envoi de mail (à x destinataires- 4 pour cet exemple) avec pièce jointe

Soyez le premier à donner votre avis sur cette source.

Snippet vu 16 195 fois - Téléchargée 26 fois

Contenu du snippet

Il sagit de pouvoir envoyer "au coup par coup" un mail informatif à x destinataires réguliers ,
Concerne peut être plus les gens ayant un serveur de messagerie d'entreprise (?)
le contenu du mail étant une pièce jointe au format html
Intérêt : si on a besoin d'informer régulièrement les même destinataires.
Bassé sur une fonction d'envoi de mail paramétrables à x destinataires (exemple 4)
La pièce jointe étant à créer et à gérer parallèlement (contenu libre)
elle est lue par le fichier php et ajoutée au message.

aperçu de la fonction : function sendSMTP($recipient1,$recipient2,$recipient3,$recipient4,$subject,$content)

Source / Exemple :


<?php
//FICHIER ENVOIMAILTEST.PHP
//PARTIE MESSAGERIE : fonction à laquelle on peut rajouter x recipient 
//ajout à faire en ligne 6 puis 27 puis 34 puis 57 et en ligne 84
function sendSMTP($recipient1,$recipient2,$recipient3,$recipient4,$subject,$content) { 
 //saisir le nom de son serveur de messagerie et arborescence de celui ci si nécessaire
 $smtp_server = "Nomserveur.arborescence.sourcearborescence";  
 $port = 25;
 //saisir le nom de domaine (par exemple wanadoo.fr)  
 $mydomain = "toto.fr";
 //saisir l'intitulé de son compte de messagerie
 $nomprenom="prenom.nom"; 
 //fin de la partie paramètrages
 $sender = "$nomprenom@$mydomain"; 
 $datesend = date("D M j G:i:s T Y");  
 $handle = fsockopen($smtp_server,$port);  
 if($handle) {  
  fputs($handle, "HELO $mydomain\r\n");  
  fgets($handle,100);  
  fputs($handle, "MAIL FROM:<$sender>\r\n");  
  fgets($handle,100);  
  fputs($handle, "RCPT TO:<$recipient1>\r\n"); 
  fputs($handle, "RCPT TO:<$recipient2>\r\n"); 
  fputs($handle, "RCPT TO:<$recipient3>\r\n"); 
  fputs($handle, "RCPT TO:<$recipient4>\r\n");   
  fgets($handle,100);  
  fputs($handle, "DATA\r\n");  
  fgets($handle,100);  
  fputs($handle, "From: VRS HelpDesk <$sender>\r\n"); 
  fputs($handle, "To: $recipient1\r\n"); 
  fputs($handle, "To: $recipient2\r\n"); 
  fputs($handle, "cc: $recipient3\r\n");
  fputs($handle, "cc: $recipient4\r\n");
  fputs($handle, "Subject: $subject\r\n");  
  fputs($handle, "Date: $datesend\r\n");  
  fputs($handle, "Mime-Version: 1.0\r\n"); 
  fputs($handle, "Content-Type: txt/plain ; charset=\"iso-8859-1\"\r\n"); 
  fputs($handle, "Content-Transfer-Encoding: 7bit\r\n"); 
  fputs($handle, "$content"); 
  fputs($handle, "\r\n.\r\n"); 
  fgets($handle,100);  
  fputs($handle, "QUIT\n");  
  fgets($handle,100);  
  sleep(5);  
  fclose($handle);  
 
 } else { 
  echo "Echec d'envoi du message!";  
 } 
}

//gestion des destinataires
$recipient1="prenom1.nom1@wanadoo.fr";
$recipient2="prenom2.nom2@noos.fr";
$recipient3="prenom3.nom3@xxxxx.fr";
$recipient4="prenom4.nom4@yyyyyy.fr";
$subject="EnvoiMail.htm";

//CREATION DU CONTENU
//LECTURE D'UN FICHIER HTML EXTERNE
$file = "Message Aux Interesses.htm";
$fp = fopen($file, "rb");
$attachment = fread($fp, filesize($file));
fclose($fp);
$msg  = "Content-Type: txt/plain ; name=\"$file\"\r\n";
$msg .="<br>";
$msg .= "Content-Disposition: inline; filename=\"$file\"\r\n";
$msg .="<br>";
$msg .= $attachment;
//AJOUT CONTENU COMMENTAIRE
$content2="bonjour";
$content2.="<font color=\"#FF0000\"><h2>Il s'agit d'envoyer</h2></font>\r\n";
$content2.="<font color=\"#FF0000\"><h2>un message</h2></font>\r\n";
$content2.="<font color=\"#FF0000\"><h2>à x personnes</h2></font>\r\n";
$content2.="<html><br></html>";
$content2.="<html><br></html>";

//afffectation du contenu
$content=$msg;
$content.=$content2;

//ENVOI DU MESSAGE
sendSMTP($recipient1,$recipient2,$recipient3,$recipient4,$subject,$content);

//s'affiche pendant l'envoi du message
echo "Aller voir dans la messagerie";

$content2="<font color=\"#FF0000\"><h2>Il s'agit d'envoyer un message</h2></font>\r\n";
$content2.="<font color=\"#FF0000\"><h2>à x personnes</h2></font>\r\n";
$content2.="<font color=\"#FF0000\"><h2>sous forme de pièce jointe\"Message Aux Interesses.htm\"</h2></font>\r\n";
$content2.="<html><br></html>";
$content2.="<html><br></html>";
echo $content2;
FIN DU FICHIER PHP
?>

<?PHP
//CONCERNE LE FICHIER HTML
//code de la piece jointe au format html 
//pour l'exemple "Message Aux Interesses.htm" (respecter blancs, casses et abscence d'accent)ou à adapter
//code htm suit
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>Comment maîtriser les coûts d</TITLE>
<META content="Microsoft FrontPage 5.0" name=GENERATOR>
<META content=FrontPage.Editor.Document name=ProgId>
<META http-equiv=Content-Type content="text/html; charset=windows-1252"></HEAD>
<BODY>
<P><B class=color4-8>Comment maîtriser les coûts d'impression 
?</B><BR><EM>[08/09/2005]</EM></P>
<P><A vspace=10 border=1></A> </P>
<P align=left><B class=color3-8>Politique d'impression et achats de consommables 
informatiques :</B><BR><IMG height=5 hspace=2 
src="Message Aux InteressesX_fichiers/puce_jaune.gif" width=5 vspace=2> Sept 
actions concrètes pour mieux maîtriser les impressions de documents et 
participer au développement durable au quotidien.<BR><IMG height=5 hspace=2 
src="Message Aux InteressesX_fichiers/puce_jaune.gif" width=5 vspace=2> Note de 
service co-signée par la XXX et la YYYY aux ZZZZ et aux WWWW<BR><IMG height=5 
hspace=2 src="Message Aux InteressesX_fichiers/puce_jaune.gif" width=5 vspace=2> 
Fiche de préconisations "Les bonnes pratiques d'impression".</P>
<P style="TEXT-ALIGN: left"> </P></BODY></HTML>

Conclusion :


Le seul souci que j'ai c'est que cela envoie le mail aux 4 destinataires prévus
(je n'ai pas testé si il y avait une limite en nombre)
et que le message contient bien le fichier html sous forme de pièce jointe.
Mais je n'ai pas encore trouvé comment rajouter un commentaire dans le corps du message en même temps.
(le corps du message est vide)
et (ce serait l'idéal) comment incorporer la partie html dans le corps du message.
Il faut que je creuse les options de composition de mail via Php.

A voir également

Ajouter un commentaire

Commentaires

Messages postés
470
Date d'inscription
dimanche 9 janvier 2005
Statut
Membre
Dernière intervention
11 mai 2013

dls ^^ j'avais vu et compris mais je voulai rajouter la boucle

for(;;)
{
echo '^^
';
}
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Bah c'est ce que je disais plus haut oui ;-)

"pourquoi tu ne passerais pas par un array"
Messages postés
470
Date d'inscription
dimanche 9 janvier 2005
Statut
Membre
Dernière intervention
11 mai 2013

//moi j'aurai plutot vu

$destinataire = array("destinataire1@example.com",
"destinataire2@example.com",
"destinataire3@example.com",
"destinataire4@example.com");

$nb_dest = count($destinataire);

for($i = 0; $i < $nb_dest; i++)
{

//envoya de mail au destinataire : $i

}


//Nan ? ^^
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut,

pourquoi tu ne passerais pas par un array ou par la function get_num_args pour récupérer le nombre d'arguments de ta fonction ?

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.