4

我正在努力寻找一种简单的方法来使用 TestComplete 回复收件箱中的电子邮件。

目前我正在使用的代码可以在这里http://support.smartbear.com/viewarticle/9022/在 JScript 部分下找到。

我已经设法根据正文和主题创建并发送一封电子邮件以模拟回复。然而,这还不够,因为我正在测试的软件需要有一个真正的回复才能将其链接到之前发送的消息,以将其放置在正确的用户邮箱中。

任何帮助将不胜感激。如果您需要更多信息,请询问。

4

2 回答 2

2

您应该能够做到这一点,而不会出现通过 COM 使用 Outlook 的问题。我已经修改了您提到的文章中的示例,以演示如何执行此操作。

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;
  }
}
于 2012-10-24T08:44:18.997 回答
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();

拥有新正文的原因是因为否则会发送空白响应。

于 2012-10-24T08:37:30.770 回答