Ошибка MIME - принятие типов MIME при отправке электронной почты - PullRequest
0 голосов
/ 08 октября 2009

Следующий скрипт работает (почти) так, как я хочу. Этот проект близок к завершению с одной маленькой проблемой. В сообщении электронной почты я получаю следующее: «Если вы видите этот MIME, то ваш клиент не принимает типы MIME! --jacquie1003"

Это отправляется через Novell GroupWise. Я включил почтовый скрипт и полученную электронную почту. Письмо приходит с приложением, и все выглядит хорошо, за исключением этого сообщения об ошибке. См. Текст сообщения ниже.

Пользователи заполняют форму примерно с 95 полями. Когда они представляют, проверка проводится на обязательных полях. Если все завершено, заполненная форма представляется им в том же окне, создается файл, а электронное письмо создается и отправляется (с созданным файлом в качестве вложения) в одну из пяти предварительно заданных групп получателей.

Что я делаю не так в моем почтовом скрипте. Любая помощь будет принята с благодарностью. На данный момент я не собираюсь использовать PEAR, PHPmailer, Zend и т. Д., За исключением случаев, когда мне абсолютно необходимо.

Я заранее прошу прощения за форматирование моей вырезки и вставки. Заранее спасибо

начало почтового скрипта

<code><pre>$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.<br /><br />"
."<strong><u>Incident Summary</u></strong><br />"
."<strong>Case Number:</strong> " . $inc_number . "<br />"
."<strong>Category:</strong> " . $category . "<br />"
."<strong>UCR:</strong> " . $ucr . "<br />"
."<strong>Location:</strong> " . $inc_street . "<br />"
."<strong>Date:</strong> " . $inc_date . "<br />"
."<strong>Time:</strong> " . $inc_time . "<br />"
."<strong>Officer:</strong> " . $officer . "&nbsp/&nbsp" . $officer_pr . "<br />"
.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);

скрипт конца почты

Электронное сообщение

Пожалуйста, смотрите прикрепленный файл резюме.

Краткое описание инцидента

Номер дела: 0910071139

Категория: Вопросы концерна COT

UCR: 04.03

Расположение: 1310 Вт. Чудо-миля

Дата: 10-07-09

Время: 1505

Офицер: Смит / 13785

Если вы видите этот MIME, ваш клиент не принимает типы MIME!

- jacquie1003

Конец письма

Ответы [ 2 ]

0 голосов
/ 08 августа 2017

Считаю, что одна проблема в том, что вы переписываетесь с новыми строками в сообщении с помощью nl2br. Он будет вставлять теги разрыва в границы, типы контента и т. Д.

Возможно, будет проще сделать что-то подобное, чтобы получить правильные переводы строк:

$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();

Возможно, вам также понадобится использовать как составные / смешанные, так и составные / альтернативные варианты, как показано в этом руководстве: Шпаргалки

0 голосов
/ 23 октября 2009

Попробуйте снять \ r \ n с вашей границы. Не уверен, что это поможет, но у меня похожая проблема, и при добавлении он печатает часть вложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...