Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/12/2010, 18h46   #1
Invité de passage
 
Inscription : février 2008
Messages : 14
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 14
Points : 1
Points : 1
Par défaut Entête dans le corps de l'e-mail

Bonjour,
j'ai des problèmes avec l'envoi dans certains cas (orange, wanadoo,free) entre autres avec une partie de l'entête qui se retrouve dans le corps du mail.
je suis hebergé chez OVH serveur linux Fedora.
j'utilise une variante du code suivant :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php
$mail = 'weaponsb@mail.fr'; // Déclaration de l'adresse de destination.
if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail)) // On filtre les serveurs qui présentent des bogues.
{
	$passage_ligne = "\r\n";
}
else
{
	$passage_ligne = "\n";
}
//=====Déclaration des messages au format texte et au format HTML.
$message_txt = "Salut à tous, voici un e-mail envoyé par un script PHP.";
$message_html = "<html><head></head><body><b>Salut à tous</b>, voici un e-mail envoyé par un <i>script PHP</i>.</body></html>";
//==========
 
//=====Lecture et mise en forme de la pièce jointe.
$fichier   = fopen("image.jpg", "r");
$attachement = fread($fichier, filesize("image.jpg"));
$attachement = chunk_split(base64_encode($attachement));
fclose($fichier);
//==========
 
//=====Création de la boundary.
$boundary = "-----=".md5(rand());
$boundary_alt = "-----=".md5(rand());
//==========
 
//=====Définition du sujet.
$sujet = "Hey mon ami !";
//=========
 
//=====Création du header de l'e-mail.
$header = "From: \"WeaponsB\"<weaponsb@mail.fr>".$passage_ligne;
$header.= "Reply-to: \"WeaponsB\" <weaponsb@mail.fr>".$passage_ligne;
$header.= "MIME-Version: 1.0".$passage_ligne;
$header.= "Content-Type: multipart/mixed;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
//==========
 
//=====Création du message.
$message = $passage_ligne."--".$boundary.$passage_ligne;
$message.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary_alt\"".$passage_ligne;
$message.= $passage_ligne."--".$boundary_alt.$passage_ligne;
//=====Ajout du message au format texte.
$message.= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_txt.$passage_ligne;
//==========
 
$message.= $passage_ligne."--".$boundary_alt.$passage_ligne;
 
//=====Ajout du message au format HTML.
$message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_html.$passage_ligne;
//==========
 
//=====On ferme la boundary alternative.
$message.= $passage_ligne."--".$boundary_alt."--".$passage_ligne;
//==========
 
 
 
$message.= $passage_ligne."--".$boundary.$passage_ligne;
 
//=====Ajout de la pièce jointe.
$message.= "Content-Type: image/jpeg; name=\"image.jpg\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: base64".$passage_ligne;
$message.= "Content-Disposition: attachment; filename=\"image.jpg\"".$passage_ligne;
$message.= $passage_ligne.$attachement.$passage_ligne.$passage_ligne;
$message.= $passage_ligne."--".$boundary."--".$passage_ligne; 
//========== 
//=====Envoi de l'e-mail.
mail($mail,$sujet,$message,$header);
 
//==========
?>
lorsque je vais sur Php.net par exemple je vois pas mal de choses sur le sujet du type :
Citation:
The example indicates \r\n at the end of each line in the headers but this was causing me problems as emails showed some of the headers as part of the body. I simply used only \n as in some of the other examples and the problem went away.
Citation:
If you use the constant PHP_EOL instead of own character sequences, the php installation will take care for the required line ending as well on Linux as on Windows installations.
Citation:
his is my solution of problems with Windows Mail on Vista. I got some of the headers in the mail body as plain text. When I removed '\r' and left just '\n' at the end of the two last lines of header it worked. This error didn't show up in my yahoo mail.
....
en fait je ne sais pas trop quoi faire et pourquoi :
si mail() s'appuit sur sendmail faut-il mettre /n le "problème des serveurs qui boguent" reste t-il avec /n dans le header?...
Merci de votre retour d'expérience bien sûr je peux tester tous cela mais l'approche me parait peux "scientifique" je pense que les dévelloppeurs de clients Mail ont résolus cela depuis longtemps.
Merci de vos conseils et explications.
TEXMAN1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2010, 12h45   #2
Membre Expert
 
Avatar de nosferapti
 
Inscription : avril 2009
Messages : 1 157
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 1 157
Points : 1 129
Points : 1 129
pour envoyer des e-mails complexes, le plus simple est d'utiliser une librairie qui fait déjà tout comme PHPMailer par exemple :
http://jcrozier.developpez.com/tutor...eloppeurs/#LIV
__________________
GNAP !
nosferapti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2010, 17h09   #3
Invité de passage
 
Inscription : février 2008
Messages : 14
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 14
Points : 1
Points : 1
Citation:
Envoyé par nosferapti Voir le message
pour envoyer des e-mails complexes, le plus simple est d'utiliser une librairie qui fait déjà tout comme PHPMailer par exemple :
http://jcrozier.developpez.com/tutor...eloppeurs/#LIV
Oui bien sûr, mais je voulais comprendre un peu plus à fond le sujet. Sans doute que la plupart des développeurs vont à l'essentiel qui marche.
TEXMAN1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h58.


 
 
 
 
Partenaires

Hébergement Web