2010-05-12 5 views
0

J'essaie d'envoyer un e-mail à partir de la commande de messagerie php. J'ai été capable de ce que j'ai essayé jusqu'ici, mais je n'arrive pas à le faire fonctionner avec un attachement. Je l'ai regardé sur le web et le meilleur code que j'ai trouvé m'a conduit à ceci:Envoi de courrier avec un fichier php avec une pièce jointe au format PDF

$fileatt_name = 'JuneFlyer.pdf'; 
$fileatt_type = 'application/pdf'; 
$fileatt = 'JuneFlyer.pdf'; 
$file = fopen($fileatt,'rb'); 
$data = fread($file,filesize($fileatt)); 
$data = chunk_split(base64_encode($data)); 
$MAEmail = "[email protected]"; 

mail("$email_address", "$subject", "$message", 
"From: ".$MAEmail."\n". 
"MIME-Version: 1.0\n". 
"Content-type: text/html; charset=iso-8859-1". 
"--{$mime_boundary}\n" . 
"Content-Type: {$fileatt_type};\n" . 
" name=\"{$fileatt_name}\"\n" . 
"Content-Disposition: attachment;\n" . 
" filename=\"{$fileatt_name}\"\n" . 
"Content-Transfer-Encoding: base64\n\n" .$data. "\n\n"); 

Il y a deux problèmes quand je fais cela. D'abord, le contenu de l'email disparaît. Deuxièmement, il y a une erreur sur la pièce jointe. "Adobe Reader n'a pas pu ouvrir June_flyer.pdf, car il n'est pas un type de fichier pris en charge ou parce que le fichier a été endommagé (par exemple, il a été envoyé comme pièce jointe et n'a pas été correctement décodé)"

comment faire face à cela?

Merci,

JB

Répondre

4

La meilleure façon la façon de traiter du courrier et php est d'utiliser une bibliothèque bien testée fiable - email avec pièces jointes peuvent facilement obtenir très méchant. Personnellement, je recommande SwiftMailer.

+0

Cela ressemble à beaucoup de fichiers juste pour un système de messagerie PHP. – animuson

+0

+1 Pas besoin de réinventer la roue ici. Swift Mailer et PHPMailer font de l'envoi d'emails un jeu d'enfant. – webbiedave

+0

Juste e-mail html et e-mail avec pièces jointes sont l'une de ces choses où une bonne bibliothèque vaut bien quelques fichiers de code de la bibliothèque étrangère. –

1

peut être le problème est dans l'en-tête. Si vous voulez apprendre à la dure, puis comprendre comment vous pouvez configurer différents types MIME avec en-têtes et faire les choses.

ou autrement, utilisez PHPmailer ou d'autres bibliothèques d'email qui feront le plus dur pour vous.

0

Un processus d'apprendre le format e-mail correcte pour envoyer des pièces jointes est d'essayer vous envoyer un e-mail (avec pièce jointe) en utilisant Thunderbird, Outlook, etc.

afficher ensuite la source de ce courriel. Essayez de copier et coller cette source de message dans votre code PHP (avec un peu d'entêtes comme To et From et Subject que la fonction mail() gère déjà) et bada-bing, vous avez tout ce dont vous avez besoin juste devant vous.

Vous pouvez le rendre dynamique en remplaçant les blocs d'éléments (partie HTML, partie de texte, pièce jointe) avec vos blocs ou variables uniques.

Ensuite, aucune bibliothèque de fantaisie n'est nécessaire.

Questions connexes