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 08/03/2011, 09h12   #1
Futur Membre du Club
 
Inscription : décembre 2007
Messages : 87
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 87
Points : 17
Points : 17
Par défaut Fonction mail + pièce jointe = mail vide

Bonjour,
Je buche la dessus depuis hier. J'ai besion, via un petit script php tout naze d'envoyer un mail avec quelques photos en pièce jointe.

Mon problème c'est que j'ai beau récupérer des scripts tout fait ça ne fonctionne pas !

Genre là, j'ai pris ce script :http://a-pellegrini.developpez.com/tutoriels/php/mail/
et bien que je ne change que l'adresse de destinataire et la photo, binnn ça fonctionne pas.

Je reçois le mail, mais vide, avec juste le sujet, et en pièce jointe l'image, avec le bon nom mais vide aussi. Help me please, je galère, j'ai peut être des trucs à paramétrer... je sais pas.

Voici mon code :
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
 
    // To
$to = 'test@ici.com';
 
// Subject
$subject = 'Developpez.com - Test Mail';
 
// clé aléatoire de limite
$boundary = md5(uniqid(microtime(), TRUE));
 
// Headers
$headers = 'From: Adrien Pellegrini <mail@server.com>'."\r\n";
$headers .= 'Mime-Version: 1.0'."\r\n";
$headers .= 'Content-Type: multipart/mixed;boundary='.$boundary."\r\n";
$headers .= "\r\n";
 
// Message
$msg = 'This is a multipart/mixed message.'."\r\n\r\n";
 
// Texte
$msg .= '--'.$boundary."\r\n";
$msg .= 'Content-type:text/plain;charset=utf-8'."\r\n";
$msg .= 'Content-transfer-encoding:8bit'."\r\n";
$msg .= 'Un message avec une pièce jointe.'."\r\n";
 
// Pièce jointe
$file_name = '193z.jpg';
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);
    $content = chunk_split(base64_encode($content));
    $f = fclose($handle);
 
    $msg .= '--'.$boundary."\r\n";
    $msg .= 'Content-type:'.$file_type.';name='.$file_name."\r\n";
    $msg .= 'Content-transfer-encoding:base64'."\r\n";
    $msg .= $content."\r\n";
}
 
// Fin
$msg .= '--'.$boundary."\r\n";
 
// Function mail()
mail($to, $subject, $msg, $headers);
Pour info, l'image est dans le même dossier que le script.
sadkat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 15h16   #2
Membre régulier
 
Homme
Chef de projet NTIC
Inscription : juin 2007
Messages : 69
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Chef de projet NTIC
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juin 2007
Messages : 69
Points : 70
Points : 70
Salut sadkat,

Déjà la fonction filetype que tu utilises n'est pas appropriée, le Content-type du mail réclame non pas le type de fichier mais son mimetype que tu obtiens avec la fonction mime_content_type ou par le FileInfo si tu es en php >= 5.3.0.

Second point il te manque le Content-Disposition comme tu trouveras ci-dessous.
Code :
1
2
3
4
5
6
7
8
9
$fp = fopen($file, "r");
$attachment = fread($fp, filesize($file));
fclose($fp);
$attachment = chunk_split(base64_encode($attachment));
$message .= '--'.$boundary."\r\n";
$message .= 'Content-type:'.mime_content_type($file).';name='.basename($file)."\r\n";
$message .= 'Content-Transfer-Encoding: base64'."\r\n";
$message .= 'Content-Disposition: attachment; filename='.$file."\r\n"; 
$message .= $attachment."\r\n\r\n";
Bon courage.
Cobalt59 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/03/2011, 15h57   #3
Futur Membre du Club
 
Inscription : décembre 2007
Messages : 87
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 87
Points : 17
Points : 17
Merci beaucoup.
Entre temps j'ai trouvé le "Content-Disposition".

Je passe en résolu !
sadkat est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h16.


 
 
 
 
Partenaires

Hébergement Web