Envoi des emails avec MIME et des fichiers attachés

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Envoi des emails avec MIME et des fichiers attachés

par zeus » 21 déc. 2006, 19:16

Dans ce cas là, je ne suis pas sur qu'il faille répéter les headers à chaque pièce jointe...

par nejme.eddinne » 21 déc. 2006, 18:47

C'est ce que j'ai fais, pour chaque fichier attaché j'appelle la fonction attachm()
:(

par zeus » 21 déc. 2006, 18:11

Je ne suis pas spécialiste des mails mais il me semble qu'il faut répéter le boundary autour de chaque pièce jointe et non pas seulement autour de l'ensemble des pièces jointes :?

par nejme.eddinne » 21 déc. 2006, 18:06

je voulé rajouter qu'avec cette ligne:
$header.="Content-Type: multipart/mixed; boundary=\"".$boundary."\"".$n_ligne.$n_ligne;
je reçoit un email vide
mais si je met
$header.="Content-Type: multipart/mixed; ".$n_ligne.$n_ligne;
je reçoit le message codé comme je vous est indiqué

Merci

Envoi des emails avec MIME et des fichiers attachés

par nejme.eddinne » 21 déc. 2006, 17:57

Bonjour
Un problème d'envoi des adresses Emails via un formulaire WEB avec la posibilité d'envoyer plusieurs fichiers uploadés...
en premier lieux je télécharge les fichiers sur le serveur, et je transmis la liste des fichiers dans une variable POST. mon problème c'est qu'il envoi l'email mais le contenu du mail est codé c comme si c t le fread() du fichier avec le codage chunsk_split, donc je suppose que c'est un prblm de header.
@ini_set('max_execution_time','999999');
@ini_set('SMTP','smtp.serveur.com');
$n_ligne="\n";
$boundary= "--".md5(uniqid(rand()));
///////////////////// AATCTAHHCC ////////////////
function attachm($nom_fichier,$boundarys)
{
		$n_ligne="\n";
		//extension er type
		$exts=explode(".",$nom_fichier);
		$extns=strtolower($exts[(sizeof($exts)-1)]);
		if($extns=="pdf")
		$extns="application/pdf";
		else if($extns=="doc")
		$extns="application/msword";
		else
		$extns="image/jpg";
		////
		
		$fichier="mailing/files_mail/$nom_fichier";
		$handle=fopen($fichier, 'rb');
		$contenu_f=fread($handle, filesize($fichier));
		$contenu_f=chunk_split(base64_encode($contenu_f));
		fclose($handle);
		
		
		$reponse=$boundrys;
		$reponse.="Content-Type: $extns; name=\"".$nom_fichier."\"$n_ligne";
		$reponse.="Content-Transfer-Encoding: base64 $n_ligne";
		$reponse.="Content-Disposition: attachment; filename=\"".$fichier."\"".$n_ligne.$n_ligne;
		$reponse.="$contenu_f".$n_ligne.$n_ligne;
		$reponse.=$boundrys."--".$n_ligne.$n_ligne;
return $reponse;	
}		
//////////////////////////////	

//////////////////////////// TABLEAU D'ENVOIE ///////////////
	switch($_POST["groupe"])
	{
	case 'tous':$i=0;
				$mails_rq=mysql_query("SELECT email_annuaire FROM annuaire_jd");
				while($mail_tab=mysql_fetch_array($mails_rq))
				{
					if($mail_tab[0]!="")
					{
					$mails[$i]=$mail_tab[0];
					$i++;
					}
				}
				unset($mails_rq,$mail_tab);
				$mails_rq=mysql_query("SELECT email  FROM emails");
				while($mail_tab=mysql_fetch_array($mails_rq))
				{
					if($mail_tab[0]!="")
					{
					$mails[$i]=$mail_tab[0];
					$i++;
					}
				}
				unset($mails_rq,$mail_tab);
				$mails_rq=mysql_query("SELECT email  FROM users");
				while($mail_tab=mysql_fetch_array($mails_rq))
				{
					if($mail_tab[0]!="")
					{
					$mails[$i]=$mail_tab[0];
					$i++;
					}
				}
				unset($mail_rq,$mail_tab);
				$mails_rq=mysql_query("SELECT mail_m  FROM grp_mail_m");
				while($mail_tab=mysql_fetch_array($mails_rq))
				{
					if($mail_tab[0]!="")
					{
					$mails[$i]=$mail_tab[0];
					$i++;
					}
				}
				break;
	case 'jd':  $i=0;
				$mails_rq=mysql_query("SELECT email_annuaire FROM annuaire_jd");
				while($mail_tab=mysql_fetch_array($mails_rq))
				{
				
					if($mail_tab[0]!="")
					{
					$mails[$i]=$mail_tab[0];
					$i++;
					}
				}
				break;
	default:	unset($mails_rq,$mail_tab);$i=0;
				$mails_rq=mysql_query("SELECT mail_m  FROM mail_mailing WHERE grp_mail_m='".$_POST["groupe"]."'");
				while($mail_tab=mysql_fetch_array($mails_rq))
				{
					if($mail_tab[0]!="")
					{
					$mails[$i]=$mail_tab[0];
					$i++;
					}
				}
				break;
	}


$header="MIME-Version: 1.0".$n_ligne.$n_ligne;
$header.="Content-Type: multipart/related; boundary=\"".$boundary."\"".$n_ligne.$n_ligne;
$header.="From: Webmaster CJD<[email protected]>$n_ligne";
//$header.="Content-Type: multipart/mixed; ".$n_lignes.$n_ligne;
//$header.="Content-Type: text/html; charset=\"iso-8859-1\"".$n_ligne;


$message=$boundary.$n_ligne.$n_ligne;
$message.="Content-Type: text/html; charset=\"iso-8859-1\"".$n_ligne;
$message.="Content-Transfer-Encoding: 8bit".$n_ligne.$n_ligne;*/
$message.=$_POST["text"].$n_ligne.$n_ligne;

if(!empty($_POST["attach_files"]))
{
$files=explode("|",$_POST["attach_files"]);
	foreach($files as $fich_up)
		if($fich_up!="")
		{
		$message.=attachm($fich_up,$boundary);
		}
}else{
$message.=attachm("no.jpg",$boundary);
}
$message.="--".$boundary."--".$n_ligne.$n_ligne;*/
//echo $message;
	$nbr_env=0;
	$nbr_n_env=0;
//echo $header;
	foreach($mails as $adre_mail)
	{
		if(mail($adre_mail,"Centre des Jeunes Dirigeants",$message,$header))
		{
		$nbr_env++;
		}else
		$nbr_n_env++;
	
	$adr++;
	}