2009-10-08 8 views
0

Le script suivant fonctionne (presque) comme je le souhaite. Ce projet est si proche d'un petit problème. Dans l'e-mail, je reçois ce qui suit: "Si vous pouvez voir ce MIME alors votre client n'accepte pas les types MIME! --jacquie1003"Aide !! Erreur MIME avec mail() et pièce jointe

Ceci est envoyé via Novell GroupWise. J'ai inclus le script de messagerie et l'e-mail qui en résulte. L'email arrive avec la pièce jointe et tout semble bien sauf ce message d'erreur. Voir le corps du message ci-dessous.

Les utilisateurs remplissent un formulaire avec environ 95 champs. Quand ils soumettent une validation est faite sur les champs obligatoires. Si tout est terminé, le formulaire complété leur est présenté dans la même fenêtre, un fichier est créé et l'e-mail est créé et envoyé (avec le fichier créé en pièce jointe) à l'un des cinq groupes de destinataires prédéfinis. Qu'est-ce que je fais de mal dans mon script de courrier?

Toute aide serait grandement appréciée. À ce stade, je ne cherche pas à utiliser PEAR, PHPmailer, Zend, etc ... sauf si je dois absolument.

Je m'excuse d'avance pour le formatage de mon copier-coller. Nous vous remercions à l'avance

début du script courrier

$head_division = $_POST['head_division']; 
$category = $_POST['category']; 
$fname = $_POST['fname']; 
$lname = $_POST['lname']; 

$FilePath = "c:\\temp\\resumes\\"; 
$FileName = $officer_pr . "_" . $inc_number . ".html"; 
$ResumeFile = $FilePath . $FileName; 

$to = $fname . "." . $lname . "@tucsonaz.gov"; 
$from = $fname . "." . $lname; 
$subject = $head_division . " Divsional Resume (Test)"; 

$bound_text = "jacquie1003"; 
$bound = "--".$bound_text."\r\n"; 
$bound_last = "--".$bound_text."--\r\n"; 

$header ="From: " . $from . "@tucsonaz.gov" . "\r\n"; 
$header .="MIME-Version: 1.0\r\n"; 
$header .="Content-Type: multipart/mixed; boundary=\"$bound_text\""; 
$message = "If you can see this MIME then your client doesn't accept MIME types!\r\n" 
.nl2br($message) 
.$bound; 

$message .= "Content-Type: text/html; charset=\"iso-8859-1\"\r\n" 
."Content-Transfer-Encoding: 7bit\r\n\r\n" 
."Please see the attached resume file.

" ."Incident Summary
" ."Case Number: " . $inc_number . "
" ."Category: " . $category . "
" ."UCR: " . $ucr . "
" ."Location: " . $inc_street . "
" ."Date: " . $inc_date . "
" ."Time: " . $inc_time . "
" ."Officer: " . $officer . " / " . $officer_pr . "
" .nl2br($message) .$bound; $file = file_get_contents($ResumeFile); $message .= "Content-Type: text/html; name=" . $FileName . "\r\n" ."Content-Transfer-Encoding: base64\r\n" ."Content-disposition: attachment; file=" . $ResumeFile . "\r\n" ."\r\n" .chunk_split(base64_encode($file)) .$bound_last; mail($to, $subject, $message, $header);

fin courrier script

Email message

S'il vous plaît voir le fichier CV ci-joint.

Incident Résumé

Numéro de dossier: 0910071139

Catégorie: Sujets de préoccupation DUE

DUC: 04.03

Lieu: 1310 W. Miracle Mile

Date: 10 07-09

Heure: 1505

Agent: Smith/13785

Si vous pouvez voir ce MIME, votre client n'accepte pas les types MIME!

--jacquie1003

Fin de Email

Répondre

0

Essayez de prendre \ r \ n votre limite. Je ne sais pas si ça va aider, mais j'ai un problème similaire et quand j'ajoute, il imprime une partie de la pièce jointe.

0

Il me semble qu'un problème est que vous êtes en train de jouer avec vos nouvelles lignes avec nl2br sur le message. Il insérera également des étiquettes de rupture dans les limites, les types de contenu, etc.

Peut-être qu'il sera plus facile de faire quelque chose comme ça pour obtenir les nouvelles lignes droite:

$header .= "Content..."; 
$file = file_get_contents($ResumeFile); 

ob_start(); //buffer the output rather than send to client 
?> 
If you can see this MIME then your client doesn't accept MIME types! 
<?php echo $bound;?> 

Content-Type: text/html; charset="iso-8859-1" 
Content-Transfer-Encoding: 7bit 

Please see the attached resume file.<br> 
<br> 
Incident Summary<br> 
<br> 
Case Number: <?php echo $inc_number;?><br> 
Category: <?php echo $category;?><br> 
UCR: <?php echo $ucr;?><br> 
Location: <?php echo $inc_street;?><br> 
Date: <?php echo $inc_date;?><br> 
Time: <?php echo $inc_time;?><br> 
Officer: <?php echo $officer;?>/<?php echo $officer_pr;?><br> 
<?php echo $bound;?> 

Content-Type: text/html; name=<?php echo $FileName;?> 
Content-Transfer-Encoding: base64 
Content-disposition: attachment; file=<?php echo $ResumeFile;?> 

<?php echo chunk_split(base64_encode($file));?> 
<?php echo $bound_last;?> 

<?php 
$message = ob_get_flush(); 

Vous pourriez aussi avoir à utiliser les deux multipart/mixtes, ainsi que multipart/alternative comme on le voit dans ce tutoriel: Web Cheat Sheets

Questions connexes