par
BaLiSTiK » 07 avr. 2009, 08:37
Je me suis aperçu que j avais pas changé le charset, j avais gardé le iso-8859-1 au lieu du US-ASCII comme dans ton posts, resultat, ce matin, les mails etaient tj mals formés, serait-ce du à ça ?
J ai modifié ma méthode comme suit, elle devrait être correcte normalement :
/** fonction permmettant d envoyer un mail **/
function _sendMail($message,$exp,$dest,$objet){
//$msg = message envoyé
//$exp = personne qui expedie le message
//$dest = destinataire qui recevra le message
$random_hash = "PHP-alt-".md5(date('r', time()));
$head = "MIME-Version: 1.0\n";
$head.= "Content-Type: multipart/alternative;\n";
$head.= "boundary=\"----=".$random_hash."\"\n";
$head .= "Reply-to: ".$dest."\n";
$head .= " \n";
//$msg = "Ceci est un message au format MIME.\n";
//$msg = "\n\n------=".$random_hash."\n";
//Premiere partie du message
//Frontiere
//Contenu message
$message_txt = strip_tags(str_replace('<br>',chr(10),$message));
$msg .= "Content-Type: text/plain; charset=\"US-ASCII\"\n";
$msg .= "Content-Transfer-Encoding: 7bit\n\n";
$msg .= $message_txt."\n\r";
$msg .= "\n\n------=".$random_hash."\n";
$msg .= "Content-Type: text/html; charset=\"US-ASCII\"\n";
$msg .= "Content-Transfer-Encoding: 7bit\n\n";
$msg .= $message."\n\r";
$msg .= "\n\n------=".$random_hash."\n";
// $msg .= '--'.$random_hash.'--';
//Attachement de l image
$fichier = fopen($_SERVER['DOCUMENT_ROOT'].'/images/site-creation.jpg','r'); //on ouvre le fichier en lecture seule
$attachement = fread($fichier, filesize($_SERVER['DOCUMENT_ROOT'].'/images/site-creation.jpg')); //on lit l'ensemble du fichier avec la fonction fread
$attachement = chunk_split(base64_encode($attachement));
fclose($fichier); //on ferme le fichier
//=====Ajout de la pièce jointe
$msg .= "Content-Type: image/jpeg;\n name=\"site-creation.jpg\"\n";
$msg .= "Content-Transfer-Encoding: base64\n";
$msg .= "Content-Disposition: attachment;\n filename=\"site-creation.jpg\"\n";
$msg.= "\n\n------=".$random_hash."--\n";
@mail($dest,$objet,$msg,"Reply-to:$exp\nFrom: $exp\n".$head);
}
EDIT : je viens de relancer et toujours apreil, sous GMAIL c est illisible, il affiche les characteres HTML comme ceci :
------=PHP-alt-77c3bb0586d2867175fe1c4f28e47dfd
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
Liste des questions posées sur le site des experts le 6/04/2009 : <br /><p>Question de bananita<br />Date : le 06/04/2009 à&
Alors que maintenant sous Thunderbird, je n'ai plus rien, le mail est vide
EDIT 2 : Le probleme est résolu, je met le code qui fonctionne :
CODE :
/** fonction permmettant d envoyer un mail **/
/** Parametre de la fonction : le message, mail expediteur, mail destinataire, objet du message **/
function _sendMail($message,$exp,$dest,$objet){
//$msg = message envoyé
//$exp = personne qui expedie le message
//$dest = destinataire qui recevra le message
//$msg = message envoyé
//$exp = personne qui expedie le message
//$dest = destinataire qui recevra le message
//$random_hash = "PHP-alt-".md5(date('r', time()));
$random_hash = md5(uniqid(rand()));
$head = "MIME-Version: 1.0\n";
$head .= "Content-Type: multipart/alternative; boundary=\"$random_hash\"\n";
$head .= "\n";
$msg = "Ce message est au format MIME.\n";
$msg .= "\n";
//Premiere partie du message
//Frontiere
//Contenu message HTML
$msg .= "--$random_hash\n";
$msg .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
$msg .= "Content-Transfer-Encoding: 7bit\n";
$msg .= stripslashes($message)."\n\n";
$msg .= "<img src=\"cid:image1\" alt=\"\">";
$msg .= "\n\n";
//Contenu Message format texte
$msg .= "--$random_hash\n";
$msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$msg .= "Content-Transfer-Encoding: 7bit\n\n";
$message_txt = strip_tags(str_replace('<br>',chr(10),html_entity_decode($message)));
$msg .= stripslashes($message_txt)."\n";
$msg .= "\n";
//Attachement de l image
$fichier = fopen('/home/site/site.com/public_html/images/site-creation.jpg','r'); //on ouvre le fichier en lecture seule
$file = fread($fichier, filesize('/home/site/site.com/public_html/images/site-creation.jpg')); //on lit l'ensemble du fichier avec la fonction fread
//$attachement = '/home/site/site.com/public_html/images/site-creation.jpg';
//$attachement = file_get_contents($attachement);
$file = chunk_split(base64_encode($file));
fclose($fichier); //on ferme le fichier
//=====Ajout de la pièce jointe
$msg .= "--$random_hash\n";
$msg .= "Content-Type: image/jpeg;\n name=\"$file\"\n";
$msg .= "Content-Transfer-Encoding: base64\n";
$msg .= "Content-Disposition: inline;\n filename=\"$file\"\n";
$msg .= "Content-ID: <image1>\n";
$msg .= "\n";
$msg .= $file . "\n";
$msg .= "\n";
$msg .= "--$random_hash--\n";
@mail($dest,$objet,$msg,"Reply-to:$exp\nFrom: $exp\n".$head);
Je me suis aperçu que j avais pas changé le charset, j avais gardé le iso-8859-1 au lieu du US-ASCII comme dans ton posts, resultat, ce matin, les mails etaient tj mals formés, serait-ce du à ça ?
J ai modifié ma méthode comme suit, elle devrait être correcte normalement :
[php] /** fonction permmettant d envoyer un mail **/
function _sendMail($message,$exp,$dest,$objet){
//$msg = message envoyé
//$exp = personne qui expedie le message
//$dest = destinataire qui recevra le message
$random_hash = "PHP-alt-".md5(date('r', time()));
$head = "MIME-Version: 1.0\n";
$head.= "Content-Type: multipart/alternative;\n";
$head.= "boundary=\"----=".$random_hash."\"\n";
$head .= "Reply-to: ".$dest."\n";
$head .= " \n";
//$msg = "Ceci est un message au format MIME.\n";
//$msg = "\n\n------=".$random_hash."\n";
//Premiere partie du message
//Frontiere
//Contenu message
$message_txt = strip_tags(str_replace('<br>',chr(10),$message));
$msg .= "Content-Type: text/plain; charset=\"US-ASCII\"\n";
$msg .= "Content-Transfer-Encoding: 7bit\n\n";
$msg .= $message_txt."\n\r";
$msg .= "\n\n------=".$random_hash."\n";
$msg .= "Content-Type: text/html; charset=\"US-ASCII\"\n";
$msg .= "Content-Transfer-Encoding: 7bit\n\n";
$msg .= $message."\n\r";
$msg .= "\n\n------=".$random_hash."\n";
// $msg .= '--'.$random_hash.'--';
//Attachement de l image
$fichier = fopen($_SERVER['DOCUMENT_ROOT'].'/images/site-creation.jpg','r'); //on ouvre le fichier en lecture seule
$attachement = fread($fichier, filesize($_SERVER['DOCUMENT_ROOT'].'/images/site-creation.jpg')); //on lit l'ensemble du fichier avec la fonction fread
$attachement = chunk_split(base64_encode($attachement));
fclose($fichier); //on ferme le fichier
//=====Ajout de la pièce jointe
$msg .= "Content-Type: image/jpeg;\n name=\"site-creation.jpg\"\n";
$msg .= "Content-Transfer-Encoding: base64\n";
$msg .= "Content-Disposition: attachment;\n filename=\"site-creation.jpg\"\n";
$msg.= "\n\n------=".$random_hash."--\n";
@mail($dest,$objet,$msg,"Reply-to:$exp\nFrom: $exp\n".$head);
}[/php]
EDIT : je viens de relancer et toujours apreil, sous GMAIL c est illisible, il affiche les characteres HTML comme ceci :
[quote]------=PHP-alt-77c3bb0586d2867175fe1c4f28e47dfd
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
Liste des questions posées sur le site des experts le 6/04/2009 : <br /><p>Question de bananita<br />Date : le 06/04/2009 à&[/quote]
Alors que maintenant sous Thunderbird, je n'ai plus rien, le mail est vide :?
EDIT 2 : Le probleme est résolu, je met le code qui fonctionne :
CODE :
[php]
/** fonction permmettant d envoyer un mail **/
/** Parametre de la fonction : le message, mail expediteur, mail destinataire, objet du message **/
function _sendMail($message,$exp,$dest,$objet){
//$msg = message envoyé
//$exp = personne qui expedie le message
//$dest = destinataire qui recevra le message
//$msg = message envoyé
//$exp = personne qui expedie le message
//$dest = destinataire qui recevra le message
//$random_hash = "PHP-alt-".md5(date('r', time()));
$random_hash = md5(uniqid(rand()));
$head = "MIME-Version: 1.0\n";
$head .= "Content-Type: multipart/alternative; boundary=\"$random_hash\"\n";
$head .= "\n";
$msg = "Ce message est au format MIME.\n";
$msg .= "\n";
//Premiere partie du message
//Frontiere
//Contenu message HTML
$msg .= "--$random_hash\n";
$msg .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
$msg .= "Content-Transfer-Encoding: 7bit\n";
$msg .= stripslashes($message)."\n\n";
$msg .= "<img src=\"cid:image1\" alt=\"\">";
$msg .= "\n\n";
//Contenu Message format texte
$msg .= "--$random_hash\n";
$msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$msg .= "Content-Transfer-Encoding: 7bit\n\n";
$message_txt = strip_tags(str_replace('<br>',chr(10),html_entity_decode($message)));
$msg .= stripslashes($message_txt)."\n";
$msg .= "\n";
//Attachement de l image
$fichier = fopen('/home/site/site.com/public_html/images/site-creation.jpg','r'); //on ouvre le fichier en lecture seule
$file = fread($fichier, filesize('/home/site/site.com/public_html/images/site-creation.jpg')); //on lit l'ensemble du fichier avec la fonction fread
//$attachement = '/home/site/site.com/public_html/images/site-creation.jpg';
//$attachement = file_get_contents($attachement);
$file = chunk_split(base64_encode($file));
fclose($fichier); //on ferme le fichier
//=====Ajout de la pièce jointe
$msg .= "--$random_hash\n";
$msg .= "Content-Type: image/jpeg;\n name=\"$file\"\n";
$msg .= "Content-Transfer-Encoding: base64\n";
$msg .= "Content-Disposition: inline;\n filename=\"$file\"\n";
$msg .= "Content-ID: <image1>\n";
$msg .= "\n";
$msg .= $file . "\n";
$msg .= "\n";
$msg .= "--$random_hash--\n";
@mail($dest,$objet,$msg,"Reply-to:$exp\nFrom: $exp\n".$head);
[/php]