1
- // Исполняемое приложение для запуска компоненты под отладчиком
2
-
3
- // В проекте TestApp в "Ссылки" ("References") должен быть добавлен проект компоненты
4
- // В проекте TestApp должны быть подключены NuGet пакеты OneScript и OneScript.Library
5
-
6
- using System ;
1
+ using System ;
2
+ using ScriptEngine . Machine ;
7
3
using ScriptEngine . HostedScript ;
8
4
using ScriptEngine . HostedScript . Library ;
5
+ using System . Configuration ;
9
6
10
7
namespace TestApp
11
8
{
12
9
class MainClass : IHostApplication
13
10
{
14
11
15
12
static readonly string SCRIPT = @"
16
- Процедура ОтправитьПисьмоФоновоеЗадание (Знач Получатель, Знач Заголовок, Знач ТекстПисьма) Экспорт
13
+ Процедура ОтправитьПисьмо (Знач Получатель, Знач Заголовок, Знач ТекстПисьма) Экспорт
17
14
18
15
Профиль = Новый ИнтернетПочтовыйПрофиль;
19
16
20
- Профиль.АдресСервераSMTP = ""smtp.office365.com"";
17
+ Профиль.АдресСервераSMTP = Сервер;
18
+ Профиль.Таймаут = Таймаут;
21
19
22
- Профиль.ПользовательSMTP = ""[email protected] "" ;
23
- Профиль.ПарольSMTP = """" ;
24
- Профиль.ПортSMTP = 587 ;
25
- Профиль.ИспользоватьSSLSMTP = Истина ;
20
+ Профиль.ПользовательSMTP = Пользователь ;
21
+ Профиль.ПарольSMTP = Пароль ;
22
+ Профиль.ПортSMTP = ПортSMTP ;
23
+ Профиль.ИспользоватьSSLSMTP = ИспользоватьSSLSMTP ;
26
24
27
- Профиль.Пользователь = ""[email protected] "" ;
28
- Профиль.Пароль = """" ;
25
+ Профиль.Пользователь = Пользователь ;
26
+ Профиль.Пароль = Пароль ;
29
27
30
28
Сообщение = Новый ИнтернетПочтовоеСообщение;
31
29
Сообщение.Получатели.Добавить(Получатель);
32
- Сообщение.ОбратныйАдрес.Добавить(""[email protected] "" ).ОтображаемоеИмя = ""SuperStep "";
30
+ Сообщение.ОбратныйАдрес.Добавить(Отправитель ).ОтображаемоеИмя = ""Отправителище "";
33
31
Сообщение.Отправитель = Сообщение.ОбратныйАдрес.Получить(0);
34
32
Сообщение.Тема = Заголовок;
35
33
Сообщение.Тексты.Добавить(ТекстПисьма, ТипТекстаПочтовогоСообщения.ПростойТекст);
36
34
Сообщение.Тексты.Добавить(ТекстПисьма, ТипТекстаПочтовогоСообщения.ПростойТекст);
37
35
38
36
Почта = Новый ИнтернетПочта;
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
+
42
58
КонецПроцедуры
43
59
44
- ОтправитьПисьмоФоновоеЗадание (""[email protected] "", ""Theme"", ""OneScript rockz!"");
60
+ ОтправитьПисьмо (""[email protected] "", ""Theme"", ""OneScript rockz!"");
45
61
"
46
62
;
47
63
@@ -53,16 +69,43 @@ public static HostedScriptEngine StartEngine()
53
69
// Тут можно указать любой класс из компоненты
54
70
engine . AttachAssembly ( System . Reflection . Assembly . GetAssembly ( typeof ( OneScript . InternetMail . InternetMail ) ) ) ;
55
71
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
-
60
72
return engine ;
61
73
}
62
74
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
+
63
104
public static void Main ( string [ ] args )
64
105
{
65
106
var engine = StartEngine ( ) ;
107
+ InjectSettings ( engine ) ;
108
+
66
109
var script = engine . Loader . FromString ( SCRIPT ) ;
67
110
var process = engine . CreateProcess ( new MainClass ( ) , script ) ;
68
111
0 commit comments