2016-01-25 6 views
0

Есть 2 машины:
-Laptop
-Server (содержит EXE-файл, который запускает тесты)Как запустить exe-файл, когда по электронной почте с определенными ключевыми словами отправляются

Цели Сценарий: Ноутбук отсылает электронная почта с ключевыми словами «RUNTESTING». Это заставляет сервер запускать файл .exe, дожидаться завершения тестирования, а затем отправлять результаты по электронной почте на тот же адрес электронной почты.

Возможно ли это? Я ищу что-то, что может получить доступ к Outlook и «читать» электронные письма от этого конкретного человека.

Я уже настроил Дженкинса, но это не помогает при сканировании электронной почты.

ответ

0

У меня нет опыта работы с jenkins, но вы можете выполнить это с помощью C#, используя библиотеку под названием MailKit. Более конкретно, вы можете заключить код, который выполняет поиск ключевого слова в теме письма, в рамках цикла с таймером, который повторяется каждые 5 минут или около того.

Вам также необходимо удалить соответствующие сообщения или использовать какой-то журнал, чтобы избежать совпадений.

Вы также можете использовать этот код, чтобы запустить exe-файл и ждать его, чтобы закончить перед отправкой результатов (которые вы можете сделать с MailKit):

Process.Start(); 
Process.WaitForExit(); 

Что-то вроде этого:

using System.Diagnostics; 
using System.Net.Mail; 
using MailKit; 
using MailKit.Search; 
using MailKit.Net.Imap; 

void test() 
    { 
     const int period = 1000 * 60 * 5; //5 minutes 
     do 
     { 
      using (var client = new ImapClient()) 
      { 
       client.Connect(serverAddress, 993, true); 
       client.Authenticate(username, password); 
       var inbox = client.Inbox; 
       inbox.Open(FolderAccess.ReadOnly); 
       SearchQuery query = SearchQuery.SubjectContains("RUNTESTING"); 
       foreach (var uid in inbox.Search(query)) 
       { 
        var process = Process.Start("testing.exe"); 
        process.WaitForExit(); 
        using (var client = new SmtpClient()) 
        { 
         var message = new MimeMessage(); 
         message.Subject = "Testing complete"; 
         client.Connect(serverAddress, port, false); 
         client.AuthenticationMechanisms.Remove("XOAUTH2"); 
         client.Authenticate(username, password); 
         client.Send(message); 
         client.Disconnect(true); 
        } 
       } 
       client.Disconnect(true); 
      } 
      System.Threading.Thread.Sleep(period); 
     } while (true); 
    } 
+0

Wow - большое вам спасибо –

+0

Знаете ли вы, как я буду импортировать эту библиотеку в Visual Studio 2013? Я новичок в C# и VS –

+1

Я не уверен, что если в 2013 году будет поддержка NuGet, но если это будет то же самое, то будет в проекте> управлять пакетами NuGet. Там вы можете искать MailKit и легко добавлять его. В противном случае вы должны загрузить решение из связанного Github I и скомпилировать его в visual studio. Затем вы можете добавить ссылку на DLL-файл, сгенерированный Project> Add reference. – non

0

Вы можете получить доступ к почтовому ящику, как это делает Outlook, и не нужно напрямую обращаться к Outlook.

Доступны библиотеки POP3 и IMAP для большинства языков. Программу можно планировать каждые десять минут (или чаще, если необходимо) с помощью cron в Linux или Windows Task Scheduler в Windows. При запуске он будет анализировать новую почту, которую она не увидела, и когда «RUNTESTING» отображается в теме или теле, выполните действие.

Возможно, имеются коммерческие продукты для автоматизации задач в условиях электронной почты, однако писать то, что вы описываете, не должно быть особенно крупным проектом. Я бы начал изучать и тестировать библиотеки IMAP для C#, если это ваш предпочтительный язык.