Bonjour,
c'est la première fois que je poste sur un forum, j'espère avoir compris le principe...
Mon problème: avec ce code php que j'utilise mes envois de mails, je n'arrive pas à insérer dans le corps du message l'id du destinataire qui se trouve dans array_keys($_POST['destinataires']) pour pouvoir créer un lien de désabonnement.
c'est la première fois que je poste sur un forum, j'espère avoir compris le principe...
Mon problème: avec ce code php que j'utilise mes envois de mails, je n'arrive pas à insérer dans le corps du message l'id du destinataire qui se trouve dans array_keys($_POST['destinataires']) pour pouvoir créer un lien de désabonnement.
<?php
function envoi_mail($nom_from, $mail_from, $to, $subject, $data = null, $template_html = null, $template_txt = null, $pj = array()) {
$boundary_message = md5('message'.uniqid(rand()));
$boundary_pieces = md5('pieces'.uniqid(rand()));
$tab_injections = array(
'/(\n+)/i',
'/(\r+)/i',
'/(\t+)/i',
'/(%0A+)/i',
'/(%0D+)/i',
'/(%08+)/i',
'/(%09+)/i'
);
foreach(array('nom_from', 'mail_from', 'to', 'subject') as $value)
$$value = preg_replace($tab_injections, '', $$value);
$nom_from = '=?UTF-8?Q?'.str_replace(array('%20', '%'), array('_', '='), rawurlencode($nom_from)).'?=';
$subject = '=?UTF-8?Q?'.str_replace(array('%20', '%'), array('_', '='), rawurlencode($subject)).'?=';
$headers = "From: $nom_from <$mail_from>\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: multipart/mixed; boundary=$boundary_pieces\r\n";
$body = "--$boundary_pieces\r\n";
$body .= "Content-Type: multipart/alternative; boundary=$boundary_message\r\n";
$texte = null;
if(is_string($data) && strlen($data) == strlen(strip_tags($data)))
$texte = $data;
elseif(is_array($data) && is_file($template_txt)) {
$texte = file_get_contents($template_txt);
foreach($data as $key => $value)
$texte = str_replace('#'.strtoupper($key).'#', $value, $texte);
}
if($texte) {
$body .= "\r\n";
$body .= "--$boundary_message\n";
$body .= "Content-Type: text/plain; charset=UTF-8\r\n";
$body .= "Content-Transfer-Encoding: 8bit\r\n";
$body .= "\r\n";
$body .= $texte;
$body .= "\r\n";
}
$html = null;
if(is_string($data) && strlen($data) != strlen(strip_tags($data)))
$html = $data;
elseif(is_array($data) && is_file($template_html)) {
$html = file_get_contents($template_html);
foreach($data as $key => $value)
$html = str_replace('#'.strtoupper($key).'#', nl2br($value), $html);
}
if($html) {
$body .= "\r\n";
$body .= "--$boundary_message\n";
$body .= "Content-Type: text/html; charset=UTF-8\r\n";
$body .= "Content-Transfer-Encoding: 8bit\r\n";
$body .= "\r\n";
$body .= $html;
$body .= "\r\n";
}
$body .= "--$boundary_message--\r\n";
foreach($pj as $file) {
if(is_file($file['path'])) {
$body .= "--$boundary_pieces\r\n";
$body .= "Content-Type: application; name=\"".$file['name']."\"\r\n";
$body .= "Content-Disposition: attachment; filename=\"".$file['name']."\"\r\n";
$body .= "Content-Transfer-Encoding: base64\r\n";
$body .= "\r\n";
$body .= chunk_split(base64_encode(file_get_contents($file['path'])));
}
}
$body .= "--$boundary_pieces--\r\n";
if(!is_array($to))
$to = array($to);
foreach($to as $dest)
$success = mail($dest, $subject, $body, $headers);
if (!$success){
header("Location:mapage.php?erreur=1");exit;
}
else{
header("Location:mapage.php?message=1");exit;
}
}
if (isset($_POST['submit'])){
$nom_from = 'test@test.com';
$mail_from = 'test@test.com';
$destinataires = $_POST['destinataires']; // emails destinataires
$destinatairesId = array_keys($_POST['destinataires']); //id des destinataires
$to = $destinataires;
$subject = $_POST['objet'];
$data = ' LE CORPS DU MESSAGE '; // Dans le corps du message je souhaite afficher l'id de chaque destinataire pour créer un lien de désabonnement
$name = basename($_FILES['avatar']['name']);
$path = $_FILES['avatar']['tmp_name'];
$pj = array(
array(
name => ''.$name.'',
path => ''.$path.''
)
);
envoi_mail($nom_from, $mail_from, $to, $subject, $data, $template_html, $template_txt, $pj);
}
?>