Guest User

Untitled

a guest
Jan 22nd, 2018
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.21 KB | None | 0 0
  1. AddEventHandler('main', 'OnBeforeEventAdd', 'includeCustomMail');
  2.  
  3. function custom_mail($to, $subject, $message, $additional_headers, $additional_parameters) {
  4. try {
  5. $messagePostfix = '';
  6. $un = strtoupper(uniqid(time()));
  7. $eol = CAllEvent::GetMailEOL();
  8.  
  9. // Ищем инструкции по подключеннию файлов и выполняем их
  10. // ADD-FILE: #CARD1#=>card1.jpg;#CARD2#=>card2.jpg;
  11. $additional_headers = preg_replace_callback('#^s*ADD-FILE:s*([^rn]+)(?:[rn]+|$)#sim', function ($m) use (&$messagePostfix, $un, $eol) {
  12. $strAddFile = trim(mb_decode_mimeheader($m[0]));
  13. if (empty($strAddFile)) {
  14. return '';
  15. }
  16. // Разбираемся какие файлы подключать
  17. // #CARD1#=>card1.jpg;#CARD2#=>card2.jpg;
  18. $arrFileAa = preg_split('#s*;s*#', $strAddFile, -1, PREG_SPLIT_NO_EMPTY);
  19. foreach ($arrFileAa as $strFileAs) {
  20. // #CARD1#=>card2.jpg
  21. $arrFileAs = preg_split('#s*=>s*#', $strFileAs, -1, PREG_SPLIT_NO_EMPTY);
  22. // Открываем файл
  23. $f = fopen($arrFileAs[0], 'rb');
  24. if ($f === false) {
  25. $fileData = 'Сan not open file ' . $arrFileAs[0];
  26. $fileName = $arrFileAs[1] . '.txt';
  27. } else {
  28. $fileData = fread($f, filesize($arrFileAs[0]));
  29. $fileName = $arrFileAs[1];
  30. fclose($f);
  31. }
  32. $messagePostfix .= '--------' . $un . $eol;
  33. $messagePostfix .= 'Content-Type: application/octet-stream;name="' . $fileName . '"' . $eol;
  34. $messagePostfix .= 'Content-Disposition:attachment;filename="' . $fileName . '"' . $eol;
  35. $messagePostfix .= 'Content-Transfer-Encoding: base64' . $eol . $eol;
  36. $messagePostfix .= chunk_split(base64_encode($fileData)) . $eol . $eol;
  37. }
  38. return '';
  39. }, $additional_headers);
  40.  
  41. // Нужно ли добавлять файлы
  42. if ($messagePostfix) {
  43. $messagePrefix = '--------' . $un . $eol;
  44. $additional_headers = preg_replace_callback('#^s*(Content-Type:[^rn]+)(?:[rn]+|$)#sim', function ($m) use (&$messagePrefix, $eol) {
  45. $messagePrefix .= $m[1] . $eol;
  46. return '';
  47. }, $additional_headers);
  48. $additional_headers = preg_replace_callback('#^s*(Content-Transfer-Encoding:[^rn]+)(?:[rn]+|$)#sim', function ($m) use (&$messagePrefix, $eol) {
  49. $messagePrefix .= $m[1] . $eol;
  50. return '';
  51. }, $additional_headers);
  52. $additional_headers = trim($additional_headers) . $eol;
  53. $additional_headers .= 'Mime-Version: 1.0' . $eol;
  54. $additional_headers .= 'Content-Type:multipart/mixed;boundary="------' . $un . '"' . $eol . $eol;
  55.  
  56. $message = $messagePrefix . $eol . $eol . $message . $eol . $eol . $messagePostfix;
  57. }
  58.  
  59. // file_put_contents($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . 'mail.txt', $additional_headers . $message);
  60.  
  61. if ($additional_parameters != '') {
  62. return @mail($to, $subject, $message, $additional_headers, $additional_parameters);
  63. }
  64. return @mail($to, $subject, $message, $additional_headers);
  65. } catch (Exception $e) {
  66. return false;
  67. }
Add Comment
Please, Sign In to add comment