1- // Исполняемое приложение для запуска компоненты под отладчиком
2-
3- // В проекте TestApp в "Ссылки" ("References") должен быть добавлен проект компоненты
4- // В проекте TestApp должны быть подключены NuGet пакеты OneScript и OneScript.Library
5-
6- using System ;
1+ using System ;
2+ using ScriptEngine . Machine ;
73using ScriptEngine . HostedScript ;
84using ScriptEngine . HostedScript . Library ;
5+ using System . Configuration ;
96
107namespace TestApp
118{
129 class MainClass : IHostApplication
1310 {
1411
1512 static readonly string SCRIPT = @"
16- Процедура ОтправитьПисьмоФоновоеЗадание (Знач Получатель, Знач Заголовок, Знач ТекстПисьма) Экспорт
13+ Процедура ОтправитьПисьмо (Знач Получатель, Знач Заголовок, Знач ТекстПисьма) Экспорт
1714
1815 Профиль = Новый ИнтернетПочтовыйПрофиль;
1916
20- Профиль.АдресСервераSMTP = ""smtp.office365.com"";
17+ Профиль.АдресСервераSMTP = Сервер;
18+ Профиль.Таймаут = Таймаут;
2119
22- Профиль.ПользовательSMTP = ""noreply@superstep.ru"" ;
23- Профиль.ПарольSMTP = """" ;
24- Профиль.ПортSMTP = 587 ;
25- Профиль.ИспользоватьSSLSMTP = Истина ;
20+ Профиль.ПользовательSMTP = Пользователь ;
21+ Профиль.ПарольSMTP = Пароль ;
22+ Профиль.ПортSMTP = ПортSMTP ;
23+ Профиль.ИспользоватьSSLSMTP = ИспользоватьSSLSMTP ;
2624
27- Профиль.Пользователь = ""noreply@superstep.ru"" ;
28- Профиль.Пароль = """" ;
25+ Профиль.Пользователь = Пользователь ;
26+ Профиль.Пароль = Пароль ;
2927
3028 Сообщение = Новый ИнтернетПочтовоеСообщение;
3129 Сообщение.Получатели.Добавить(Получатель);
32- Сообщение.ОбратныйАдрес.Добавить(""noreply@superstep.ru"" ).ОтображаемоеИмя = ""SuperStep "";
30+ Сообщение.ОбратныйАдрес.Добавить(Отправитель ).ОтображаемоеИмя = ""Отправителище "";
3331 Сообщение.Отправитель = Сообщение.ОбратныйАдрес.Получить(0);
3432 Сообщение.Тема = Заголовок;
3533 Сообщение.Тексты.Добавить(ТекстПисьма, ТипТекстаПочтовогоСообщения.ПростойТекст);
3634 Сообщение.Тексты.Добавить(ТекстПисьма, ТипТекстаПочтовогоСообщения.ПростойТекст);
3735
3836 Почта = Новый ИнтернетПочта;
39- Почта.Подключиться(Профиль, ПротоколИнтернетПочты.IMAP);
40- Почта.Послать(Сообщение, ОбработкаТекстаИнтернетПочтовогоСообщения.НеОбрабатывать, ПротоколИнтернетПочты.SMTP);
41-
37+
38+ Попытка
39+
40+ Почта.Подключиться(Профиль, ПротоколИнтернетПочты.IMAP);
41+
42+ Исключение
43+ Сообщить(""Ошибка подключения"");
44+ Сообщить(ОписаниеОшибки());
45+ Возврат;
46+ КонецПопытки;
47+
48+ Попытка
49+
50+ Почта.Послать(Сообщение, ОбработкаТекстаИнтернетПочтовогоСообщения.НеОбрабатывать, ПротоколИнтернетПочты.SMTP);
51+
52+ Исключение
53+ Сообщить(""Ошибка отправки"");
54+ Сообщить(ОписаниеОшибки());
55+ Возврат;
56+ КонецПопытки;
57+
4258КонецПроцедуры
4359
44- ОтправитьПисьмоФоновоеЗадание (""sergey.batanov@lacoste.ru"", ""Theme"", ""OneScript rockz!"");
60+ ОтправитьПисьмо (""sergey.batanov@lacoste.ru"", ""Theme"", ""OneScript rockz!"");
4561"
4662 ;
4763
@@ -53,16 +69,43 @@ public static HostedScriptEngine StartEngine()
5369 // Тут можно указать любой класс из компоненты
5470 engine . AttachAssembly ( System . Reflection . Assembly . GetAssembly ( typeof ( OneScript . InternetMail . InternetMail ) ) ) ;
5571
56- // Если проектов компонент несколько, то надо взять по классу из каждой из них
57- // engine.AttachAssembly(System.Reflection.Assembly.GetAssembly(typeof(oscriptcomponent_2.MyClass_2)));
58- // engine.AttachAssembly(System.Reflection.Assembly.GetAssembly(typeof(oscriptcomponent_3.MyClass_3)));
59-
6072 return engine ;
6173 }
6274
75+ public static void InjectSettings ( HostedScriptEngine engine )
76+ {
77+ string server = ConfigurationManager . AppSettings [ "server" ] ;
78+ string userName = ConfigurationManager . AppSettings [ "userName" ] ;
79+ string password = ConfigurationManager . AppSettings [ "password" ] ;
80+ string replyTo = ConfigurationManager . AppSettings [ "replyTo" ] ?? String . Format ( "{0}@{1}" , userName , server ) ;
81+
82+ int portSmtp ;
83+ bool useSsl ;
84+ int timeout ;
85+
86+ if ( ! Int32 . TryParse ( ConfigurationManager . AppSettings [ "portSmtp" ] , out portSmtp ) )
87+ portSmtp = 25 ;
88+
89+ if ( ! Boolean . TryParse ( ConfigurationManager . AppSettings [ "useSsl" ] , out useSsl ) )
90+ useSsl = true ;
91+
92+ if ( ! Int32 . TryParse ( ConfigurationManager . AppSettings [ "timeout" ] , out timeout ) )
93+ timeout = 30 ;
94+
95+ engine . InjectGlobalProperty ( "Сервер" , ValueFactory . Create ( server ) , true ) ;
96+ engine . InjectGlobalProperty ( "Пользователь" , ValueFactory . Create ( userName ) , true ) ;
97+ engine . InjectGlobalProperty ( "Пароль" , ValueFactory . Create ( password ) , true ) ;
98+ engine . InjectGlobalProperty ( "ПортSMTP" , ValueFactory . Create ( portSmtp ) , true ) ;
99+ engine . InjectGlobalProperty ( "Отправитель" , ValueFactory . Create ( replyTo ) , true ) ;
100+ engine . InjectGlobalProperty ( "ИспользоватьSSLSMTP" , ValueFactory . Create ( useSsl ) , true ) ;
101+ engine . InjectGlobalProperty ( "Таймаут" , ValueFactory . Create ( timeout ) , true ) ;
102+ }
103+
63104 public static void Main ( string [ ] args )
64105 {
65106 var engine = StartEngine ( ) ;
107+ InjectSettings ( engine ) ;
108+
66109 var script = engine . Loader . FromString ( SCRIPT ) ;
67110 var process = engine . CreateProcess ( new MainClass ( ) , script ) ;
68111
0 commit comments