Skip to content

Commit

Permalink
Доработки тестового приложения.
Browse files Browse the repository at this point in the history
  • Loading branch information
dmpas committed Nov 13, 2016
1 parent 9d6b99d commit 68a3bb2
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 23 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,4 @@ bld/
*.VisualState.xml
TestResult.xml

TestApp.exe.config
89 changes: 66 additions & 23 deletions TestApp/Program.cs
Original file line number Diff line number Diff line change
@@ -1,47 +1,63 @@
// Исполняемое приложение для запуска компоненты под отладчиком

// В проекте TestApp в "Ссылки" ("References") должен быть добавлен проект компоненты
// В проекте TestApp должны быть подключены NuGet пакеты OneScript и OneScript.Library

using System;
using System;
using ScriptEngine.Machine;
using ScriptEngine.HostedScript;
using ScriptEngine.HostedScript.Library;
using System.Configuration;

namespace TestApp
{
class MainClass : IHostApplication
{

static readonly string SCRIPT = @"
Процедура ОтправитьПисьмоФоновоеЗадание(Знач Получатель, Знач Заголовок, Знач ТекстПисьма) Экспорт
Процедура ОтправитьПисьмо(Знач Получатель, Знач Заголовок, Знач ТекстПисьма) Экспорт
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = ""smtp.office365.com"";
Профиль.АдресСервераSMTP = Сервер;
Профиль.Таймаут = Таймаут;
Профиль.ПользовательSMTP = ""[email protected]"";
Профиль.ПарольSMTP = """";
Профиль.ПортSMTP = 587;
Профиль.ИспользоватьSSLSMTP = Истина;
Профиль.ПользовательSMTP = Пользователь;
Профиль.ПарольSMTP = Пароль;
Профиль.ПортSMTP = ПортSMTP;
Профиль.ИспользоватьSSLSMTP = ИспользоватьSSLSMTP;
Профиль.Пользователь = ""[email protected]"";
Профиль.Пароль = """";
Профиль.Пользователь = Пользователь;
Профиль.Пароль = Пароль;
Сообщение = Новый ИнтернетПочтовоеСообщение;
Сообщение.Получатели.Добавить(Получатель);
Сообщение.ОбратныйАдрес.Добавить(""[email protected]"").ОтображаемоеИмя = ""SuperStep"";
Сообщение.ОбратныйАдрес.Добавить(Отправитель).ОтображаемоеИмя = ""Отправителище"";
Сообщение.Отправитель = Сообщение.ОбратныйАдрес.Получить(0);
Сообщение.Тема = Заголовок;
Сообщение.Тексты.Добавить(ТекстПисьма, ТипТекстаПочтовогоСообщения.ПростойТекст);
Сообщение.Тексты.Добавить(ТекстПисьма, ТипТекстаПочтовогоСообщения.ПростойТекст);
Почта = Новый ИнтернетПочта;
Почта.Подключиться(Профиль, ПротоколИнтернетПочты.IMAP);
Почта.Послать(Сообщение, ОбработкаТекстаИнтернетПочтовогоСообщения.НеОбрабатывать, ПротоколИнтернетПочты.SMTP);
Попытка
Почта.Подключиться(Профиль, ПротоколИнтернетПочты.IMAP);
Исключение
Сообщить(""Ошибка подключения"");
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
Попытка
Почта.Послать(Сообщение, ОбработкаТекстаИнтернетПочтовогоСообщения.НеОбрабатывать, ПротоколИнтернетПочты.SMTP);
Исключение
Сообщить(""Ошибка отправки"");
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
КонецПроцедуры
ОтправитьПисьмоФоновоеЗадание(""[email protected]"", ""Theme"", ""OneScript rockz!"");
ОтправитьПисьмо(""[email protected]"", ""Theme"", ""OneScript rockz!"");
"
;

Expand All @@ -53,16 +69,43 @@ public static HostedScriptEngine StartEngine()
// Тут можно указать любой класс из компоненты
engine.AttachAssembly(System.Reflection.Assembly.GetAssembly(typeof(OneScript.InternetMail.InternetMail)));

// Если проектов компонент несколько, то надо взять по классу из каждой из них
// engine.AttachAssembly(System.Reflection.Assembly.GetAssembly(typeof(oscriptcomponent_2.MyClass_2)));
// engine.AttachAssembly(System.Reflection.Assembly.GetAssembly(typeof(oscriptcomponent_3.MyClass_3)));

return engine;
}

public static void InjectSettings(HostedScriptEngine engine)
{
string server = ConfigurationManager.AppSettings["server"];
string userName = ConfigurationManager.AppSettings["userName"];
string password = ConfigurationManager.AppSettings["password"];
string replyTo = ConfigurationManager.AppSettings["replyTo"] ?? String.Format("{0}@{1}", userName, server);

int portSmtp;
bool useSsl;
int timeout;

if (!Int32.TryParse(ConfigurationManager.AppSettings["portSmtp"], out portSmtp))
portSmtp = 25;

if (!Boolean.TryParse(ConfigurationManager.AppSettings["useSsl"], out useSsl))
useSsl = true;

if (!Int32.TryParse(ConfigurationManager.AppSettings["timeout"], out timeout))
timeout = 30;

engine.InjectGlobalProperty("Сервер", ValueFactory.Create(server), true);
engine.InjectGlobalProperty("Пользователь", ValueFactory.Create(userName), true);
engine.InjectGlobalProperty("Пароль", ValueFactory.Create(password) , true);
engine.InjectGlobalProperty("ПортSMTP", ValueFactory.Create(portSmtp), true);
engine.InjectGlobalProperty("Отправитель", ValueFactory.Create(replyTo), true);
engine.InjectGlobalProperty("ИспользоватьSSLSMTP", ValueFactory.Create(useSsl), true);
engine.InjectGlobalProperty("Таймаут", ValueFactory.Create(timeout), true);
}

public static void Main(string[] args)
{
var engine = StartEngine();
InjectSettings(engine);

var script = engine.Loader.FromString(SCRIPT);
var process = engine.CreateProcess(new MainClass(), script);

Expand Down
1 change: 1 addition & 0 deletions TestApp/TestApp.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
<Reference Include="ScriptEngine">
<HintPath>..\packages\ScriptEngine.dll</HintPath>
</Reference>
<Reference Include="System.Configuration" />
</ItemGroup>
<ItemGroup>
<Compile Include="Program.cs" />
Expand Down

0 comments on commit 68a3bb2

Please sign in to comment.