Доброго времени! Прошу помощи в решении вопроса с отображением аттача в письме.
Задача принять письмо на почтовый ящик, проанализировать его и передать это письмо на другой почтовый ящик.
Сотрудник отправляет сообщение на почтовый ящикpriem@mail.ru скрипт анализирует его и принимает решение куда переслать, пересылает на peresulka@mail.ru
Есть два варианта работы
1. Пересылка только текста и вложений, здесь всё работает
2 Пересылка текста + вложений (картинок) внутри текста
Не получается переслать вложения (картинки) внутри текста, так как я не понимаю как подцепиться к CID который есть в письме.
Вот здесь видно пересланное сообщение, два файла были в аттаче, а третий файл он был прикреплён не как аттач, а как файл в теле письма.
Но при пересылке, он становится как аттач и в теле письма не отображается. А подцепить его зная [ cid:b51c7d49-42d2-48c7-8b55-16b42b52d61d ] не получается, так как [ cid:b51c7d49-42d2-48c7-8b55-16b42b52d61d ] мне ничего не даёт, где он хранится я не знаю.
Посмотрел в теле письма в заголовках и тд и тп где только можно ... но увы
вот код
Правило прописано для работы с письмами вот здесь "Админка битрикс" -> "Сервисы" -> "Почта" -> "Правила"
Задача принять письмо на почтовый ящик, проанализировать его и передать это письмо на другой почтовый ящик.
Сотрудник отправляет сообщение на почтовый ящик
Есть два варианта работы
1. Пересылка только текста и вложений, здесь всё работает
2 Пересылка текста + вложений (картинок) внутри текста
Не получается переслать вложения (картинки) внутри текста, так как я не понимаю как подцепиться к CID который есть в письме.
Вот здесь видно пересланное сообщение, два файла были в аттаче, а третий файл он был прикреплён не как аттач, а как файл в теле письма.
Но при пересылке, он становится как аттач и в теле письма не отображается. А подцепить его зная [ cid:b51c7d49-42d2-48c7-8b55-16b42b52d61d ] не получается, так как [ cid:b51c7d49-42d2-48c7-8b55-16b42b52d61d ] мне ничего не даёт, где он хранится я не знаю.
Посмотрел в теле письма в заголовках и тд и тп где только можно ... но увы
вот код
Правило прописано для работы с письмами вот здесь "Админка битрикс" -> "Сервисы" -> "Почта" -> "Правила"
Код |
---|
$arMessageFields['BODY'] - здесь хранится письмо которое нужно передать /* формируем волшебные заголовки */ $semi_rand = md5(time()); $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; $headers = "From: corportal@samberi.com"; $headers.= "\nMIME-Version: 1.0\n"."Content-Type: multipart/mixed;\n"." boundary=\"{$mime_boundary}\""; $eol = PHP_EOL; $message = "--$mime_boundary$eol" . "Content-Type: text/html; charset=\"UTF-8\"$eol" . "Content-Transfer-Encoding: 7bit$eol$eol" . $mainMessage . $eol; /* получаем файлы из Битрикса */ if($arMessageFields["ATTACHMENTS"]>0) { $dbr_attach = CMailAttachment::GetList(Array("NAME"=>"ASC", "ID"=>"ASC"), Array("MESSAGE_ID"=>$arMessageFields["ID"])); while($dbr_attach_arr = $dbr_attach->GetNext()) { $random_string = mt_rand().mt_rand().mt_rand().mt_rand(); $file1_ext = end(explode(".", $dbr_attach_arr["FILE_NAME"])); $file1_name = substr($dbr_attach_arr["FILE_NAME"], 0, -strlen($file1_ext)-1); $file1_newname = $file1_name.$random_string.".".$file1_ext; $arFile = CFile::MakeFileArray($dbr_attach_arr["FILE_ID"]); $f = fopen($_SERVER['DOCUMENT_ROOT'].'/upload/sniff_info_gm/'.$file1_newname,'ab'); fwrite($f, print_r(file_get_contents($arFile["tmp_name"]),1)); fclose($f); $filesArr[] = $arFile["ID"]; $Path = '/'.$file1_newname; $fileatt = $_SERVER['DOCUMENT_ROOT'].'/upload/sniff_info_gm/'.$file1_newname; $fileatttype = mime_content_type($_SERVER['DOCUMENT_ROOT'].'/upload/sniff_info_gm/'.$file1_newname); $fileattname = $dbr_attach_arr["FILE_NAME"]; $file = fopen($fileatt, 'rb'); $data = fread($file, filesize($fileatt)); fclose($file); $data = chunk_split(base64_encode($data)); $message .= "--$mime_boundary$eol" . "Content-Type: $fileatttype;$eol" . " name=\"$fileattname\"$eol" . "Content-Disposition: attachment;$eol" . " filename=\"$fileattname\"$eol" . "Content-Transfer-Encoding: base64$eol". "Content-ID: img".$dbr_attach_arr["ID"]."$eol$eol". $data . $eol; } } mail($elem_582_gm['NAME'], $sbj, $message, $headers); |