Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
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 21/06/2011, 10h09   #1
Invité de passage
 
Inscription : juin 2011
Messages : 1
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 1
Points : 0
Points : 0
Par défaut Mes mails avec pièce jointe ne fonctionnent que sur Gmail

Bonjour,

J'essaye depuis un certain temps d'envoyer des mails avec pièce jointe en PHP et à des destinataires multiples. Je croyais avoir réussi quand je me suis rendu compte que mon script ne fonctionnait que sur gmail ! Sur mes autres adresses de messagerie la pièce jointe est VIDE ! Quelle serait la différence entre gmail, hotmail, 9online et les autres ?! Je suis dépité

Mon site est actuellement en ligne, hébergé par olympe-network, dans sa formule gratuite.

Vous voulez mon code ?
Voilà le formulaire :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
 
<form method="POST" action="admin.php" enctype="multipart/form-data">
 
    <p>Destinataire(s): <input type="text" name="destinataire" size="70" value="<?php echo $mail; ?>" /></p>
    <p>Exp&eacute;diteur : <input type="text" name="expediteur" size="50" value='Machin MACHIN <machin@machin.fr>' /></p>
    <p>Sujet : <input type="text" name="sujet" size="70" /></p>
    <p>Fichier joint:
    <input type="hidden" name="MAX_FILE_SIZE" value="8000000" /><input name="Nomfichier" type="file" size="16" /></p>
 
     <table>
        <tr>
            <td>
    Message :</td><td> <textarea rows="12" cols="60 "name="message"></textarea>
        </td>
        </tr>
    </table>
    <p><input type="submit" value="Envoyer" /></p>
</form>
Le code PHP :

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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
 
 
if(isset($_POST['destinataire']) AND (isset($_POST['expediteur'])) AND (isset($_POST['message']))){
 
 
//Il parait qu'il y a des soucis de passage de ligne selon des boites mail, alors :
if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $_SESSION['mail']))
{
	$passage_ligne = "\r\n";
}
else
{
	$passage_ligne = "\n";
}
 
 
//Mise en ligne de la pièce jointe
if (isset($_FILES['Nomfichier']['name']) AND $_FILES['Nomfichier']['error'] == 0)
{
 
     $filename=$_FILES['Nomfichier']['name'];
 
 
 
$extension=strrchr($filename,'.');
 
 
$extension=substr($extension,1) ;
 
$_FILES['Nomfichier']['name'] = 'piece_jointe.'.$extension;
 
 
 
                        move_uploaded_file($_FILES['Nomfichier']['tmp_name'], basename($_FILES['Nomfichier']['name']));
 
 
 
 
}
else {
    echo 'L: 346'.$_FILES['Nomfichier']['error'];
}
 
$message=nl2br(htmlentities($_POST['message']));
 
 
// clé aléatoire de limite
$boundary = md5(uniqid(microtime(), TRUE));
 
 
// Headers
$headers  = "From: ".$_POST['expediteur'].$passage_ligne;
$headers .= "Reply-to: ".$_POST['expediteur'].$passage_ligne;
$headers .= 'Mime-Version: 1.0'.$passage_ligne;
$headers .= 'Content-Type: multipart/mixed;boundary='.$boundary.$passage_ligne;
$headers .= $passage_ligne;
 
// Message
$msg = 'This is a multipart/mixed message.'.$passage_ligne.$passage_ligne;
 
// Texte
$msg .= '--'.$boundary.$passage_ligne;
$msg .= 'Content-type:text/html;charset=utf-8'.$passage_ligne;
$msg .= 'Content-transfer-encoding:8bit'.$passage_ligne;
$msg .= $message.$passage_ligne;
 
// Nom de la pièce jointe... j'ai pas pu faire autrement
if($extension=="pdf"){
    $file_name = 'piece_jointe.pdf';
}
elseif($extension=="jpeg"){
    $file_name = 'piece_jointe.jpeg';
}
elseif($extension=="jpg"){
    $file_name = 'piece_jointe.jpg';
}
elseif($extension =="zip"){
    $file_name = 'piece_jointe.zip';
}
elseif($extension =="png"){
    $file_name = 'piece_jointe.png';
}
elseif($extension == "gif"){
    $file_name = 'piece_jointe.gif';
}
elseif($extension == "odt"){
    $file_name = 'piece_jointe.odt';
}
elseif($extension == "xls"){
    $file_name = 'piece_jointe.xls';
}
elseif($extension == "txt"){
$file_name = 'piece_jointe.txt';
}
else {
    echo 'extension non reconnue';
}
 
//Je colle la pièce jointe à mon mail
if (file_exists($file_name))
{
	$file_type = filetype($file_name);
	$file_size = filesize($file_name);
 
	$handle = fopen($file_name, 'r') or die('File '.$file_name.'can t be open');
	$content = fread($handle, $file_size);
    fclose($handle);
	$content = chunk_split(base64_encode($content));
	$f = fclose($handle);
 
	$msg .= '--'.$boundary.$passage_ligne;
	$msg .= 'Content-type:'.mime_content_type($file_name).';name='.basename($file_name).$passage_ligne;
	$msg .= 'Content-transfer-encoding:base64'.$passage_ligne;
    $msg .= 'Content-Disposition: attachment; filename="'.$file_name.$passage_ligne;
	$msg .= $content.$passage_ligne;
}
$msg .= '--'.$boundary.$passage_ligne;
 
//Puis ça part !
mail($_SESSION['mail'], $_POST['sujet'], $msg, $headers);
...Et c'est le drame !

Ce code est le fruit d'une bonne galère, il doit en résulter des choses étranges, mais il est à deux doigts de fonctionner, je crois.


Ne me parlez pas de phpmailer, jy ai passé beaucoup de temps aussi, il a temporairement fonctionné, puis plus du tout... je comprends rien. J'ai vu sur des forums que le problème viendrait de olympe-network, mais pourtant ça a fonctionné et le code posté fonctionne plus ou moins aussi.


Aussi je crois que hier j'ai passé beaucoup de temps à me rendre compte que j'avais atteint une limite de mails envoyés
Tout ça pour dire que même un soutient moral serait le bienvenu, hehe

Je vous remercie énormément !
Et je suis à votre service pour des précisions, le site que je fais est le sujet d'un stage, je suis bloqué, j'attends vos réponses avec impatience !
niconok 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 22h43.


 
 
 
 
Partenaires

Hébergement Web