2012-10-23 3 views
4

Я пытаюсь найти простой способ ответить на электронную почту в папке «Входящие» с помощью TestComplete.Использование TestComplete для ответа на письмо

На данный момент я использую код для этого можно найти здесь http://support.smartbear.com/viewarticle/9022/ в разделе JScript.

Мне удалось создать и отправить электронное письмо на основе тела и подвергнуть имитации ответа. Однако этого недостаточно, поскольку тестируемое программное обеспечение должно иметь реальный ответ, чтобы связать его с сообщением, которое ранее было отправлено, чтобы разместить его в правильном почтовом ящике пользователей.

Любая помощь была бы принята с благодарностью. Если вам нужна дополнительная информация, пожалуйста, спросите.

ответ

2

Вы можете сделать это без проблем, работая с Outlook через COM. Я изменил образец в упомянутой статье, чтобы продемонстрировать, как вы можете это сделать.

function Test() 
{ 
    Log.Message(replyToMessage2010("account name", "sender email", "Test 1234321", "This is a reply")); 
} 

function replyToMessage2010(accountName, senderEMail, eMailSubject, replyText) 
{ 
    var OutlookApplication = Sys.OleObject("Outlook.Application"); 
    var NamespaceMAPI = OutlookApplication.GetNamespace("MAPI"); 

    // Check whether the specified account exists: 
    if (NamespaceMAPI.Accounts.Item(accountName) != null) 
    { 
    NamespaceMAPI.SendAndReceive(false); 

    // Get the "Inbox" folder 
    var inbox = NamespaceMAPI.Folders(accountName).Folders("Inbox"); 
    var items = inbox.Items; 
    for (var i = 1; i < items.Count + 1; i++) 
    { 
     if (items.Item(i).Subject == eMailSubject && 
     items.Item(i).SenderEmailAddress == senderEMail && items.Item(i).UnRead) 
     { 
     var reply = items.Item(i).ReplyAll(); 
     reply.Body = replyText + reply.Body; 
     reply.Send(); 
     return true; 
     } 
    } 
    return false; 
    } else 
    { 
    OutlookApplication.Quit(); 
    return false; 
    } 
} 
0

Я нашел ответ. Я был довольно глупым в том, что я думал, что метод MailItem.Reply() отправит электронное письмо. Однако я обнаружил, что он должен быть явно отправлен с помощью MailItem.Send().

Вот мой код:

//Creates a reply MailItem 
var replyEmail = currentEmail.Reply(); 
//Creates a variable on the reply email's body 
var body = replyEmail.Body; 
//Additional text to add 
var additionaltext = "Reply to Email Message.\n"; 
//Start position for insert 
var startpos = 0; 
//Inserts additional text to the beginning of the message 
var fullBody = aqString["Insert"](body, additionaltext, startpos); 
//Applies the new body to the reply email 
replyEmail.Body = fullBody; 
//Sends the new reply 
replyEmail.Send(); 

Причина, по которой новое тело, потому что в противном случае пустой отправляется ответ.