Имя: Пароль:
1C
1C 7.7
v7: Отправка почты из 1С
0 work92
 
25.09.15
08:23
Всем прив….Может кто подскажет в чем ошибка при отправке почты или этот .dll не активный
//*******************************************
Процедура Отправка()
  
  Если ЗагрузитьВнешнююКомпоненту("ROM-Mail.dll")=0 Тогда
    Сообщить("Не удалось загрузить внешнюю компоненту ROM-Mail.dll");
   Возврат;
  Конецесли;  

  Почта= СоздатьОбъект("AddIn.AddInMail");  
  Почта.СерверОтправки  = "smtp.mail.ru";
  Почта.ПортОтправки    = "2525";  
  Почта.Логин        ="[email protected]" ;
  Почта.Пароль      = "admin111";
  Если Почта.Соединение = 0 Тогда
    Если Почта.Подключиться("Отправка")=0 Тогда
      Сообщить("Не удалось подключиться к почтовому серверу","!");
Иначе
    Сообщить("Подключен");

    Конецесли;
Конецесли;

///СпрПочта=СоздатьОбъект("Справочник.Почтовик");
//Текст=СоздатьОбъект("текст");
// СпрПочта.ВыбратьЭлементы();
//Пока СпрПочта.ПолучитьЭлемент() = 1 Цикл  
    
//ВедемНаз=СокрЛП(СпрПочта.Шифр)+".txt";
    
//КонецЦикла;


//Каталог = "D:\Бух почта и проч\Пачки\";




//ФС.УстТекКаталог(Каталог);
//ИмяФайла = "";
//ИмяФайла = ФС.НайтиПервыйФайл(ВедемНаз);
//Если ИмяФайла <> "" Тогда

//    Сообщить("найден"+ИмяФайла);
//Иначе
    
    //Сообщить("Не найден файл")

    // КонецЕсли;

  //Почта.Важность    = 0;
// Почта.Кодировка    = "windows-1251";
  Почта.ТипПисьма    = 2;
  Почта.АдресОтправителя  ="[email protected]";
  Почта.ИмяОтправителя  ="Дим";

  //указываем получателей письма
  //Почта.ДобавитьАдрес("АдресПолучателя","Юкола Техно","[email protected]");
   АдресПолучателя="[email protected]";
   ИмяПолучателя="Берк";
   Почта.ДобавитьАдрес("АдресПолучателя",ИмяПолучателя,АдресПолучателя);
  
  //если необходимо добавляем вложения
  //Почта.Вложения = ИмяФайла;
  
  Почта.Тема  = "Тета Акт ";
  Почта.Тело  = "тут";  
  
  //Пытаемся отправить
  Если Почта.Соединение=0 Тогда
       Сообщить("Соединение потеряно","!");
  ИначеЕсли Почта.Отправить()=1 Тогда
       Сообщить("Почтовое сообщение отправлено","i");
  Иначе
       Сообщить("Не удалось отправить сообщение","!");
    Конецесли;    

  //Отключаемся




КонецПроцедуры
1 work92
 
25.09.15
08:23
Пишет что подключен но не отправляет
2 Mikeware
 
25.09.15
08:24
Ошибка там же, где и всегда...
3 work92
 
25.09.15
08:25
эта где
4 Mikeware
 
25.09.15
08:26
В ДНК...
5 vde69
 
25.09.15
08:27
(3) в прокладке между монитором и креслом


зы
зачем левая длл когда есть штатный функционал?
6 work92
 
25.09.15
08:28
Может есть ответ по делу
7 vde69
 
25.09.15
08:35
Почта.ПортОтправки    = "2525";  

ты уверен?

а вообще без описания ошибки - фиг победишь...
8 work92
 
25.09.15
08:45
Раньше писал 25 и тоже нет отправки
9 Злопчинский
 
25.09.15
08:58
Не мучайся
Юзай
http://catalog.mista.ru/public/14131/

Можно использовать как интерактивно так и программно вызывать с передачей параметров для отправки письма

Все что надо - правильно прописать параметры подключения к почте
10 varelchik
 
25.09.15
09:24
не удачная компонента.
используй dialmail.
11 botman4
 
25.09.15
15:32
вот примерчеГ, все работает, вполне сносно!
https://yadi.sk/d/-U4F7m3TjKJiR
12 vde69
 
25.09.15
16:45
Функция ОтправитьПисьмо (Письмо, МассивАдресов, СсылкаНаОбъект, Регистратор, Комментарий = "", УчетнаяЗапись = Неопределено, РегистрироватьОшибки = Истина, Отправка = Истина) Экспорт
    
    _УчетнаяЗапись = УчетнаяЗапись;
    Если УчетнаяЗапись = Неопределено Тогда
        _УчетнаяЗапись = ПолучитьСистемнуюУчетнуюЗапись();
    КонецЕсли;
    
    Если не _УчетнаяЗапись.ИспользоватьДляОтправки Тогда
        Возврат Ложь;
    КонецЕсли;
    
    Если Не Письмо.ОправлятьПочтовыеУведомления Тогда
        Возврат Ложь;
    КонецЕсли;
    
    Если МассивАдресов = Неопределено Тогда
        Возврат Ложь;                            
    КонецЕсли;
    
    Если МассивАдресов.Количество() = 0 Тогда
        Возврат Ложь;
    КонецЕсли;                                                  
    
    //Если ТипЗнч(СсылкаНаОбъект) = Тип("ДокументСсылка.Сделка") Тогда
    //    Если СсылкаНаОбъект.ОтправленыеУведомления.Найти(Регистратор,"Источник") <> Неопределено Тогда
    //        Возврат Ложь;
    //    КонецЕсли;
    //КонецЕсли;
    
    
    _Отправка = Отправка;
    Если не Отправка Тогда
        Если не _УчетнаяЗапись.ОтложенаяОтправкаПочты Тогда
            _Отправка = Истина;
        КонецЕсли;
    КонецЕсли;
    
    Если не _Отправка Тогда
        // запись в регистр отложеной отправки
        Запись = РегистрыСведений.ДоставкаПочты.СоздатьМенеджерЗаписи();
        Запись.МассивОтправки     = Новый ХранилищеЗначения(МассивАдресов);
        Запись.Объект             = СсылкаНаОбъект;
        Запись.ШаблонПисьма        = Письмо;
        Запись.Оправлен            = Ложь;
        Запись.Комментарий        = Комментарий;
        Запись.ДокументРегистратор    = Регистратор;
        Запись.Записать(Истина);
    Иначе
        // собствено отправка
        ТемаПисьма         = СобратьЭлементПочтовогоСообщения(Письмо.Тема, СсылкаНаОбъект);
        СообщениеПисьма = СобратьЭлементПочтовогоСообщения(Письмо.Сообщение, СсылкаНаОбъект, Комментарий);
        
        Если      Письмо.ТипТекстаПисьма = Перечисления.ТипыТекстовЭлектронныхПисем.HTML
              ИЛИ Письмо.ТипТекстаПисьма = Перечисления.ТипыТекстовЭлектронныхПисем.HTMLСКартинками Тогда
              
            ОбработатьПереносСтроки(ТемаПисьма);
            ОбработатьПереносСтроки(СообщениеПисьма);
        КонецЕсли;
        
        СистемнаяПочта  = СокрЛП(_УчетнаяЗапись.АдресЭлектроннойПочты);
        ТипСообщения = Неопределено;
        Профиль = СформироватьИнтернетПрофиль(_УчетнаяЗапись);
        
        Попытка
            Сообщение = Новый ИнтернетПочтовоеСообщение;
            Сообщение.Тема             = ТемаПисьма;
            Сообщение.Отправитель     = СистемнаяПочта;
            
            Для Каждого ПочтовыйАдрес из МассивАдресов Цикл
                Если Найти(ПочтовыйАдрес, "@") > 0 Тогда
                    Сообщение.Получатели.Добавить(ПочтовыйАдрес);
                КонецЕсли;
            КонецЦикла;
            
            Если      Письмо.ТипТекстаПисьма = Перечисления.ТипыТекстовЭлектронныхПисем.HTML
                  ИЛИ Письмо.ТипТекстаПисьма = Перечисления.ТипыТекстовЭлектронныхПисем.HTMLСКартинками Тогда
                  
                Сообщение.Тексты.Добавить(СообщениеПисьма, ТипТекстаПочтовогоСообщения.HTML);
                
            ИначеЕсли Письмо.ТипТекстаПисьма = Перечисления.ТипыТекстовЭлектронныхПисем.РазмеченныйТекст Тогда
                
                Сообщение.Тексты.Добавить(СообщениеПисьма, ТипТекстаПочтовогоСообщения.РазмеченныйТекст);
                
            Иначе
                Сообщение.Тексты.Добавить(СообщениеПисьма, ТипТекстаПочтовогоСообщения.ПростойТекст);
            КонецЕсли;
            
            Почта = Новый ИнтернетПочта;
            Почта.Подключиться(Профиль);
            Почта.Послать(Сообщение);
            Почта.Отключиться();
            
            
            //Если ТипЗнч(СсылкаНаОбъект) = Тип("ДокументСсылка.Сделка") Тогда
            //    оСделка = СсылкаНаОбъект.ПолучитьОбъект();
            //    НоваяСтрока = оСделка.ОтправленыеУведомления.Добавить();
            //    НоваяСтрока.Источник = Регистратор;
            //    оСделка.ОбменДанными.Загрузка = Истина;
            //    оСделка.Записать();
            //КонецЕсли;
            
            
        Исключение
            Если РегистрироватьОшибки Тогда
                ЗарегистрироватьОшибкуОтправкиПочты(СсылкаНаОбъект, Письмо, МассивАдресов, ОписаниеОшибки(), Регистратор, Комментарий);
            КонецЕсли;
            Возврат Ложь;
        КонецПопытки;
    КонецЕсли;
    
    Возврат Истина;
КонецФункции
13 vde69
 
25.09.15
16:46
(12) у меня этот код работает уже 8 лет, в день примерно 100 писем шлет, работает как зверь....
14 Builder
 
25.09.15
17:33
Может рассказать человеку про SSL?
Или пусть еще помучается?
15 Garykom
 
гуру
25.09.15
17:55
(14) может еще про stunnel заодно рассказать?
16 HawkEye
 
25.09.15
20:46
(0) лови

CDOConfig = СоздатьОбъект("CDO.Configuration");
    CDOMessage = СоздатьОбъект("CDO.Message");
        
    CDOConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing").Value = 2; //для работы без Exchange
        
    CDOConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value = СокрЛП(вхФилиал.СерверОтправки); // smtp.mail.ru
        
    CDOConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport").Value = 25; // 25
        
    CDOConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate").Value = вхФилиал.АутентификацияПриОтправке;
        
    CDOConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername").Value = СокрЛП(вхФилиал.ПочтаЛогин); //
        
    CDOConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword").Value = СокрЛП(вхФилиал.ПочтаПароль); // 123
        
    CDOConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl").Value = 0;
        
    CDOConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout").Value = 60;
        
    CDOConfig.Fields.Update();
        
    CDOMessage.Configuration = CDOConfig;
    CDOMessage.From = СокрЛП(вхФилиал.ПочтовыйАдрес); // [email protected]  
    CDOMessage.To = СокрЛП(вхФилиал.АдресПолучателя); // [email protected]
        
    CDOMessage.Subject = СокрЛП(вхФилиал.Заголовок);
        
    CDOMessage.TextBody = "Автообмен. Отправитель: " + СокрЛП(вхФилиал.Наименование) + " " + ТекущаяДата()+" - "+ТекущееВремя();; // "Отправлено из 1С"
    
    CDOMessage.textBodypart.charset="windows-1251";
        
    Сообщить("Адрес получателя: "+вхФилиал.АдресПолучателя);
    стр=прм_КаталогБазы+"PC\" + СокрЛП(вхФилиал.ИмяФайлаВыгрузки);
    Сообщить("Имя файла выгрузки: "+стр);
    Если ФС.СуществуетФайл(стр)=1 Тогда
        CDOMessage.AddAttachment(стр);
    Иначе        
        стр=прм_КаталогБазы+"CP\" + СокрЛП(вхФилиал.ИмяФайлаВыгрузки);
        Сообщить("Ищем файл: "+стр);
        Если ФС.СуществуетФайл(стр)=1 Тогда
            CDOMessage.AddAttachment(стр);
        Иначе
            Сообщить("Не найден файл выгрузки: "+стр); а=1/0;
        КонецЕсли;
    КонецЕсли;  
    
    Сообщить("Идет отправка сообщения ...");
    Попытка
        CDOMessage.Send();
        Сообщить("Отправлен ");
    Исключение
        Сообщить("Не удалось отправить отчет ");
    КонецПопытки;
17 Serginio1
 
25.09.15
21:23
18 0xFFFFFF
 
25.09.15
21:25
(13) Заголовок как бэ намекает, что этот твой чудно зверский код в 7.7 работать будет не очень... :)
19 0xFFFFFF
 
25.09.15
21:26
(10) в 7.7 всю жизь пользовались Rom-mail, проблем не было ни разу.
20 Builder
 
25.09.15
22:16
(19) До тех пор пока яндекс и мейлру и прочие не включили SSL.
Для своего корпоративного почтового сервера она конечно будет работать.
21 Злопчинский
 
25.09.15
22:17
(16)  как бы в (9) оно и есть - только полностью готовое к работе + полезные мелочи