Имя: Пароль:
1C
1С v8
Отправка почты помогите с примером
,
0 AugustBlack
 
10.04.13
08:45
привет, поделитесь с работающим примером. Нужно письма отправлять с компа на котором не установлен 1С. Через smtp gmail или mail.ru
нашел в инете примерный код дописал параметры, не работает где поправить:
ИПП = Новый ИнтернетПочтовыйПрофиль;
ИПП.АдресСервераSMTP = "smtp.gmail.com";
ИПП.ВремяОжидания = "200";
ИПП.Пароль = "123123";
ИПП.ПарольSMTP = "123123";
ИПП.Пользователь = "[email protected]";
ИПП.ПользовательSMTP = "[email protected]";
ИПП.ПортSMTP = "465";
// Создать сообщение.
Сообщение = Новый ИнтернетПочтовоеСообщение;
Сообщение.Получатели.Добавить("[email protected]");
Сообщение.Отправитель.Адрес = "[email protected]";
Сообщение.Тема = "Срочно в номер!";
Сообщение.Тексты.Добавить("Доброе время суток!");

Почта = Новый ИнтернетПочта;
Почта.Подключиться(ИПП);
Почта.Послать(Сообщение);
Почта.Отключиться();
1 ДенисЧ
 
10.04.13
08:47
Интересно...
А как ты будешь выполнять код на 1с на компе, где нет 1с?? :-))
2 AugustBlack
 
10.04.13
08:47
*тьфу..не установлен 1С* - опечатка, не установлен почтовый клиент :D
3 ДенисЧ
 
10.04.13
08:49
А так...

на vbs

Set objMessage = CreateObject("CDO.Message")
objMessage.Sender = "[email protected]"
objMessage.To = "[email protected]"
objMessage.From = "[email protected]"
objMessage.TextBody = "Hi there!"
objMessage.Subject = "Subject of email"
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 '
objMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 '
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.server"
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25'
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "[email protected]"

objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "smtp_pass"
objMessage.Configuration.Fields.Update
objMessage.Send
4 Wobland
 
10.04.13
08:51
&НаСервере
Функция Разослать_срв(СсылкаНаОбъект)
   Почта=Новый ИнтернетПочта;
   Профиль=Новый ИнтернетПочтовыйПрофиль;
   Профиль.АутентификацияSMTP=СпособSMTPАутентификации.БезАутентификации;
   Профиль.АдресСервераSMTP="192.168.99.2";
   Попытка
       Почта.Подключиться(Профиль);
   Исключение
       Возврат ОписаниеОшибки();
   КонецПопытки;
   
   Сообщение=Новый ИнтернетПочтовоеСообщение;
   Сообщение.Тема="Ежедневный отчёт по оргтехнике";
   Сообщение.Отправитель.ОтображаемоеИмя=Константы.ГлавВрачИмя.Получить();
   Сообщение.Отправитель.Адрес=Константы.ГлавВрачАдрес.Получить();
   
   НовыйПолучатель=Сообщение.Получатели.Добавить();
   НовыйПолучатель.Адрес=СсылкаНаОбъект.Пациент.ЭлектронныйАдрес;
   НовыйПолучатель.ОтображаемоеИмя=СсылкаНаОбъект.Пациент.ПолноеНаименование;
   
   ОрдинаторыИмена=СтрЗаменить(Константы.ОрдинаторыИмена.Получить(), ";", Символы.ПС);
   ОрдинаторыАдреса=СтрЗаменить(Константы.ОрдинаторыАдреса.Получить(), ";", Символы.ПС);
   Если СтрЧислоСтрок(ОрдинаторыИмена)<>СтрЧислоСтрок(ОрдинаторыАдреса) Тогда
       Возврат "Несоответствие имён и адресов ординаторов";
   КонецЕсли;
   Для й=1 По СтрЧислоСтрок(ОрдинаторыИмена) Цикл
       НовыйПолучатель=Сообщение.Копии.Добавить();
       НовыйПолучатель.ОтображаемоеИмя=СтрПолучитьСтроку(ОрдинаторыИмена, й);
       НовыйПолучатель.Адрес=СокрЛП(СтрПолучитьСтроку(ОрдинаторыАдреса, й));
   КонецЦикла;
   
   ИмяВременногоФайла=КаталогВременныхФайлов()+"ЕжедневныйОтчёт_"+СсылкаНаОбъект.Пациент.ПолноеНаименование+"_"+Формат(СсылкаНаОбъект.Дата, "ДФ=yyyyMMdd")+".xls";
   ТабДок=Документы.Жалоба.СформироватьПечатнуюФорму(СсылкаНаОбъект);
   ТабДок.Записать(ИмяВременногоФайла, ТипФайлаТабличногоДокумента.XLS);
   Сообщение.Вложения.Добавить(ИмяВременногоФайла);
   
   Попытка
       Почта.Послать(Сообщение);
   Исключение
       Возврат ОписаниеОшибки();
   КонецПопытки;
   Почта.Отключиться();
   //УдалитьФайлы(ИмяВременногоФайла);
   
   об=СсылкаНаОбъект.ПолучитьОбъект();
   об.Разослано=Истина;
   об.Записать(РежимЗаписиДокумента.Проведение);
   Возврат "";
КонецФункции
5 Fedot200
 
10.04.13
08:56
(4) "НовыйПолучатель=Сообщение.Копии.Добавить();" вместо этой строки предлагаю:
НовыйПолучатель=Сообщение.СЛЕПЫЕКопии.Добавить(АДРЕС);

как-то так, главное в слепые копии добавлять, тогда провайдеры за спам не посчитают.
6 Wobland
 
10.04.13
08:58
(5) не, нужно именно так. а провайдер вон: 192.168.99.2 ;)
7 Fedot200
 
10.04.13
08:58
(6) Если у тебя 100500 адресатов, сколько писем будет?
8 Wobland
 
10.04.13
09:01
(7) 100500 и будет. чо пристал? ;) писалось на коленке за час под строго определённую задачу лично для себя
9 Fedot200
 
10.04.13
09:04
(8) а если адресатов сувать в слепые копии, то будет одно письмо. Не пристал, а рекомендую более интересный метод. + еще фича в том, что получатель не будет выидеть остальных которые в слепых копиях. А в "кому" можно себя поставить, тем самым будешь контролировать, прошла рассылка али нет.
10 Fedot200
 
10.04.13
09:06
+(9) фокус еще в том, что адресов в слепых копиях нет даже в служебном заголовке. И провайдерские фильтры не эригируют, что это спам.
11 Wobland
 
10.04.13
09:07
(9) мне нужно, чтобы юзеры видели остальных получателей - все вместе работаем. а вот себя в слепую копию я не догадался, спасибо, мысль
12 Fedot200
 
10.04.13
09:08
(11) Пожалуйста. Ну да разные задачи. Слепые хорошо когда клиентам прайс-лист рассылаешь, чтобы клиент не видел базу рассылки.
13 AugustBlack
 
10.04.13
09:16
(4) по аналогии написал, но письмо не приходит:
Почта=Новый ИнтернетПочта;
Профиль=Новый ИнтернетПочтовыйПрофиль;
Профиль.АутентификацияSMTP=СпособSMTPАутентификации.Login;
Профиль.АдресСервераSMTP="smtp.mail.ru";
Профиль.ПортSMTP = "25";
Профиль.ПользовательSMTP = "[email protected]";
Профиль.ПарольSMTP = "123123";
Попытка
   Почта.Подключиться(Профиль);
Исключение
   Возврат ОписаниеОшибки();
КонецПопытки;
Сообщение=Новый ИнтернетПочтовоеСообщение;
Сообщение.Тема="Ежедневный отчёт";
Сообщение.Отправитель.ОтображаемоеИмя="уйцйцу";
Сообщение.Отправитель.Адрес="[email protected]";
Сообщение.Тексты = "12312312312312";

НовыйПолучатель=Сообщение.Получатели.Добавить();
НовыйПолучатель.Адрес="[email protected]";
НовыйПолучатель.ОтображаемоеИмя="[email protected]";

Попытка
   Почта.Послать(Сообщение);
Исключение
   Возврат ОписаниеОшибки();
КонецПопытки;
Почта.Отключиться();
14 Fedot200
 
10.04.13
09:27
(13)
Профиль.ПользовательSMTP = "[email protected]";
Профиль.ПарольSMTP = "123123";

маилру говорит:
Неверное имя пользователя или пароль.
Проверьте правильность введенных данных.

:-)
15 ИС-2
 
naïve
10.04.13
09:29
(0) не изобретайте велосипед. В конфах есть докумеyn Электронное письмо - его используйте
16 AaNnDdRrEeYy
 
10.04.13
10:20
(15)+ еще есть специальный общий модуль "РаботаСЭлектроннойПочтой" там все есть и все работает, и справочник есть "Учетные записи электронной почты" если все это правильно использовать то письмо можно отправить написав максимум 5 строк кода.
17 Wobland
 
15.04.13
10:16
а я вот сейчас раскомментарил удаление из (4) и получил ошибку совместного доступа. кем занят файл, а?

   ИмяВременногоФайла=КаталогВременныхФайлов()+"ЕжедневныйОтчёт_"+СсылкаНаОбъект.Пациент.ПолноеНаименование+"_"+Формат(СсылкаНаОбъект.Дата, "ДФ=yyyyMMdd")+".xls";
   ТабДок=Документы.Жалоба.СформироватьПечатнуюФорму(СсылкаНаОбъект);
   ТабДок.Записать(ИмяВременногоФайла, ТипФайлаТабличногоДокумента.XLS);
   Сообщение.Вложения.Добавить(ИмяВременногоФайла);
   
   Попытка
       Почта.Послать(Сообщение);
   Исключение
       Возврат ОписаниеОшибки();
   КонецПопытки;
   Почта.Отключиться();
   //УдалитьФайлы(ИмяВременногоФайла);