Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Отправить письмо с вложением

00 голосов
3
подскажите, как моно средствами битрикса отправить письмо и вложить в него файл, который находиться на сервере в папке upload ?
спросил 01 Сен, 13 от Storitell (340 баллов)

3 Ответы

00 голосов
Невероятно! Что невозможно отправить файл? :o
ответил 01 Сен, 13 от Gromutttt (140 баллов)
00 голосов
ответил 21 Ноя, 13 от Mushu (640 баллов)
00 голосов
может кому и поможет

Код
function SendMail($File, $arMail, $sMessageName = "Письмо с вложением", $sMessageText = "Текст выпуска")
{
   CModule::IncludeModule("subscribe");
   
   if($File != "" && file_exists($_SERVER['DOCUMENT_ROOT'].$File)) 
   {
      // создаем рубрику для рассылок
      $RUB_ID = "";
      $rub = CRubric::GetList(array(), array("ACTIVE"=>"Y", "NAME" => "Письма с вложениями"));
      if(!$arRub = $rub->Fetch())
      {
         $rubric = new CRubric;
         $arFields = Array(
            "ACTIVE"   => "Y",
            "NAME"    => "Письма с вложениями",
            "LID"    => SITE_ID
         );
      
         $RUB_ID = $rubric->Add($arFields);
         if($RUB_ID == false) {
            echo $rubric->LAST_ERROR;
            return "Не удалось добавить рубрику";   
         }  
      } 
      else { 
         $RUB_ID = $arRub["ID"];   
      }
   
      // создаем выпуск и прикрепляем к нему файл
      $posting = new CPosting;
      $arFields = Array(
         "FROM_FIELD"  => COption::GetOptionString("main", "email_from"),
         "TO_FIELD"    => COption::GetOptionString("main", "email_from"),
         "BCC_FIELD"   => implode(", ", $arMail),
         "SUBJECT"    => $sMessageName,
         "BODY_TYPE"   => "html",
         "BODY"     => $sMessageText,
         "DIRECT_SEND"   => "N",
         "CHARSET"    => "Windows-1251",
         "RUB_ID"    => array($RUB_ID),
         "STATUS"   => "P"
      );
   
      $POST_ID = $posting->Add($arFields);
      if($POST_ID == false) {
         echo $posting->LAST_ERROR;
         return "Не удалось добавить выпуск";
      }
      else 
      {
         // прикрепляем файл
         $file_id = CPosting::SaveFile($POST_ID, 
            array(
             "name"  => "Прикрепленный файл",
             "size"   =>  filesize($_SERVER['DOCUMENT_ROOT'].$File),
             "tmp_name" =>  $_SERVER['DOCUMENT_ROOT'].$File,
             "type"  => "html"
            )
         );
   
         if($file_id===false) {
            return "Ошибка при сохранении вложения";
         }
         else {
            echo $POST_ID;
            // генерим рассылку
            if(!$posting->SendMessage($POST_ID)) {
               echo $posting->LAST_ERROR;
            }
         
         }
      }
   } 
   else 
   {
      if($File != "")
      return "Введите путь к прикрепляемому файлу";
      elseif(!file_exists($_SERVER['DOCUMENT_ROOT'].$File)) 
      return "Такого файла не существует";
   }
   
   return true;
}


в функции могут бить и глюки, но главное идея ;)
ответил 02 Март, 14 от ioannes (540 баллов)

Похожие вопросы

0 голосов
0 ответов
0 голосов
5 ответов
спросил 09 Ноя, 13 от HeJIJIu (630 баллов)
0 голосов
1 ответ
0 голосов
3 ответов
спросил 24 Март, 14 от Lucienna (100 баллов)
0 голосов
2 ответов
спросил 23 Фев, 14 от Siomo (100 баллов)