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

Не приходит прикрепленный файл

00 голосов
3
Используется "Отправка писем с аттачем" блог Долганина Антона.
Приходит файл с идентичным "оригиналу отправки" именем, но пустой и размером где-то 129 байт.
В чем может быть проблема? ))) Подскажите, народ добрый!!! =)
спросил 20 Март, 14 от Serofim (800 баллов)

3 Ответы

00 голосов
могу предложить альтернативный вариант

Когда возникла необходимость отправлять письмо с аттачем - я решил использовать проверенный временем PHPMailer

код класса под Битрикс (необходимо подключить PHPMailer):

Код
<?php
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/pmailer/class.phpmailer.php");

class App_BMailer extends PHPMailer
{
   public function __construct() {
      
      $this->CharSet = 'utf-8';
      $this->Encoding = 'base64';
   }
   
   public function sendTemplate($templateType, $fields) {
      
      $rsMess = CEventMessage::GetList($by="site_id", $order="desc", 
         array( 
            "TYPE" => $TEMPLATE_TYPE, 
            "SITE_ID­" => SITE_ID, 
            "ACTIVE" => "Y", 
         )); 
   
      if ($arMess = $rsMess->Fetch()) {

         $arSearch = array( 
               "#DEFAULT_EMAIL_FROM#", //E-Mail адрес по умолчанию (устанавливается в настройках) 
               "#SITE_NAME#", //Название сайта (устанавливается в настройках) 
               "#SERVER_NAME#" //URL сервера (устанавливается в настройках) 
            ); 
         $arReplace = array( 
            COption::GetOptionString("main", "email_from"), 
            COption::GetOptionString("main", "site_name"), 
            COption::GetOptionString("main", "server_name"), 
         ); 

         $from = str_replace($arSearch, $arReplace, $arMess["EMAIL_TO"]);
         $this->From = $from;
         $to = str_replace($arSearch, $arReplace, $arMess["EMAIL_TO"]);
         $this->AddAddress($to);
         $bcc = str_replace($arSearch, $arReplace, $arMess["BCC"]);
         if(!empty($bcc)) $this->AddBCC($bcc);
         $subj = str_replace($arSearch, $arReplace, $arMess["SUBJECT"]);
         $this->Subject = $subj;
         
         $text = str_replace($arSearch, $arReplace, $arMess["MESSAGE"]);
         
         foreach($fields as $key => $value) {
            
            $text = str_replace('#'.$key.'#', $value, $text);
         }
         $this->Body = $text;
         $this->IsHTML(true);
         
         if(array_key_exists('FILES', $fields) && is_array($fields['FILES'])) {
            
            foreach($fields['FILES'] as $value) {
               
               $this->AddAttachment($value);
            }
         }
       
         return $this->Send();
      }
      return false;
   }
}

пример использования

Код
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/bmailer.php");

// в массив значений шаблона добавляем массив файлов
$arEmail['FILES'] = array($licenseFile);
$mailer = new App_BMailer();
// отправляем обычный Битриксовский шаблон
$mailer->sendTemplate($templateType, $arEmail);
ответил 14 Сен, 14 от Orlangur (220 баллов)
00 голосов
Спасибо! но хотелось бы узнать, может кто знает, почему не работает вышеприведенный скрипт?! ;)
ответил 19 Янв, 15 от Serofim (800 баллов)
00 голосов
Люди! ))) Здесь есть живые и умные?! )))))))
ответил 04 Май, 15 от Serofim (800 баллов)

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