Skip to content

Commit 68a3bb2

Browse files
committed
Доработки тестового приложения.
1 parent 9d6b99d commit 68a3bb2

File tree

3 files changed

+68
-23
lines changed

3 files changed

+68
-23
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,4 @@ bld/
3030
*.VisualState.xml
3131
TestResult.xml
3232

33+
TestApp.exe.config

TestApp/Program.cs

+66-23
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,63 @@
1-
// Исполняемое приложение для запуска компоненты под отладчиком
2-
3-
// В проекте TestApp в "Ссылки" ("References") должен быть добавлен проект компоненты
4-
// В проекте TestApp должны быть подключены NuGet пакеты OneScript и OneScript.Library
5-
6-
using System;
1+
using System;
2+
using ScriptEngine.Machine;
73
using ScriptEngine.HostedScript;
84
using ScriptEngine.HostedScript.Library;
5+
using System.Configuration;
96

107
namespace 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 = ""[email protected]"";
23-
Профиль.ПарольSMTP = """";
24-
Профиль.ПортSMTP = 587;
25-
Профиль.ИспользоватьSSLSMTP = Истина;
20+
Профиль.ПользовательSMTP = Пользователь;
21+
Профиль.ПарольSMTP = Пароль;
22+
Профиль.ПортSMTP = ПортSMTP;
23+
Профиль.ИспользоватьSSLSMTP = ИспользоватьSSLSMTP;
2624
27-
Профиль.Пользователь = ""[email protected]"";
28-
Профиль.Пароль = """";
25+
Профиль.Пользователь = Пользователь;
26+
Профиль.Пароль = Пароль;
2927
3028
Сообщение = Новый ИнтернетПочтовоеСообщение;
3129
Сообщение.Получатели.Добавить(Получатель);
32-
Сообщение.ОбратныйАдрес.Добавить(""[email protected]"").ОтображаемоеИмя = ""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-
ОтправитьПисьмоФоновоеЗадание(""[email protected]"", ""Theme"", ""OneScript rockz!"");
60+
ОтправитьПисьмо(""[email protected]"", ""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

TestApp/TestApp.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
<Reference Include="ScriptEngine">
3838
<HintPath>..\packages\ScriptEngine.dll</HintPath>
3939
</Reference>
40+
<Reference Include="System.Configuration" />
4041
</ItemGroup>
4142
<ItemGroup>
4243
<Compile Include="Program.cs" />

0 commit comments

Comments
 (0)